php使用gmail smtp发送电子邮件

时间:2013-09-15 14:59:35

标签: php email smtp gmail

我正在尝试使用Gmail(甚至是Yahoo SMTP)发送电子邮件,我有以下代码

require("class.phpmailer.php");

//ini_set("SMTP","smtp.google.com" ); 
$smtp=$_GET["smtp"];
$youremail= $_GET["youremail"];   
$emailpassword=$_GET["emailpassword"]; 
$companyemail=$_GET["companyemail"]; 
$messagetitle= $_GET["messagetitle"];
$messagetext=$_GET["messagetext"];
echo "_GET variables dump" ;
var_dump($smtp);
var_dump($youremail);
var_dump($emailpassword);
var_dump($companyemail);
var_dump($messagetitle);
var_dump($messagetext);

//this is a path to PHP mailer class you have dowloaded

//include("class.phpmailer.php");

$emailChunks = explode(",", $companyemail);
for($i = 0; $i < count($emailChunks); $i++){
//  echo "Piece $i =  <br />";


$mail = new PHPMailer();

$mail->IsSMTP();
$mail->SMTPDebug  = 1; // errors and messages



//$mail->SMTPSecure = "tls";                 // sets the prefix to the servier
$mail->SMTPSecure = "ssl";
$mail->Port       = 587;  

$mail->Host = $smtp;

$mail->SMTPAuth = true; // turn on SMTP authentication

$mail->Username = $youremail; // SMTP username

$mail->Password = $emailpassword; // SMTP password

$mail->From = $youremail; //do NOT fake header.

$mail->FromName = $youremail;

$adr=$emailChunks[$i];
$mail->AddAddress($adr); // Email on which you want to send mail

$mail->AddReplyTo($emailpassword, "Reply to"); //optional

$mail->IsHTML(true);

$mail->Subject = $messagetitle;

$mail->Body = $messagetext;
echo "mail variable dump" ;
var_dump($mail);
if(!$mail->Send())
{
echo $mail->ErrorInfo;
}else{
echo "email was sent";

}

}

当我调用代码时 - 我使用var_dump进行调试,我得到了

ALL EMAIL MESSAGES HAVE BEEN  WITH STATUS :_GET variables dumpstring(14) "smtp.gmail.com"
string(18) "me@gmail.com"
string(8) "mypass"
string(18) "sendTo@yahoo.com"
string(2) "message subject"
string(6) "message"
Invalid address: mypassmail variable dumpobject(PHPMailer)#1 (53) {
  ["Priority"]=>
  int(3)
  ["CharSet"]=>
  string(10) "iso-8859-1"
  ["ContentType"]=>
  string(9) "text/html"
  ["Encoding"]=>
  string(4) "8bit"
  ["ErrorInfo"]=>
  string(25) "Invalid address: mypass"
  ["From"]=>
  string(18) "me@gmail.com"
  ["FromName"]=>
  string(18) "me@gmail.com"
  ["Sender"]=>
  string(0) ""
  ["Subject"]=>
  string(2) "ja"
  ["Body"]=>
  string(6) "message"
  ["AltBody"]=>
  string(0) ""
  ["WordWrap"]=>
  int(0)
  ["Mailer"]=>
  string(4) "smtp"
  ["Sendmail"]=>
  string(18) "/usr/sbin/sendmail"
  ["PluginDir"]=>
  string(0) ""
  ["ConfirmReadingTo"]=>
  string(0) ""
  ["Hostname"]=>
  string(0) ""
  ["MessageID"]=>
  string(0) ""
  ["Host"]=>
  string(14) "smtp.gmail.com"
  ["Port"]=>
  int(587)
  ["Helo"]=>
  string(0) ""
  ["SMTPSecure"]=>
  string(3) "ssl"
  ["SMTPAuth"]=>
  bool(true)
  ["Username"]=>
  string(18) "me@gmail.com"
  ["Password"]=>
  string(8) "mypass"
  ["Timeout"]=>
  int(10)
  ["SMTPDebug"]=>
  int(1)
  ["SMTPKeepAlive"]=>
  bool(false)
  ["SingleTo"]=>
  bool(false)
  ["SingleToArray"]=>
  array(0) {
  }
  ["LE"]=>
  string(1) "
"
  ["DKIM_selector"]=>
  string(9) "phpmailer"
  ["DKIM_identity"]=>
  string(0) ""
  ["DKIM_domain"]=>
  string(0) ""
  ["DKIM_private"]=>
  string(0) ""
  ["action_function"]=>
  string(0) ""
  ["Version"]=>
  string(3) "5.1"
  ["smtp:private"]=>
  NULL
  ["to:private"]=>
  array(1) {
    [0]=>
    array(2) {
      [0]=>
      string(18) "sendTo@yahoo.com"
      [1]=>
      string(0) ""
    }
  }
  ["cc:private"]=>
  array(0) {
  }
  ["bcc:private"]=>
  array(0) {
  }
  ["ReplyTo:private"]=>
  array(0) {
  }
  ["all_recipients:private"]=>
  array(1) {
    ["sendTo@yahoo.com"]=>
    bool(true)
  }
  ["attachment:private"]=>
  array(0) {
  }
  ["CustomHeader:private"]=>
  array(0) {
  }
  ["message_type:private"]=>
  string(0) ""
  ["boundary:private"]=>
  array(0) {
  }
  ["language:protected"]=>
  array(17) {
    ["provide_address"]=>
    string(54) "You must provide at least one recipient email address."
    ["mailer_not_supported"]=>
    string(25) " mailer is not supported."
    ["execute"]=>
    string(19) "Could not execute: "
    ["instantiate"]=>
    string(36) "Could not instantiate mail function."
    ["authenticate"]=>
    string(35) "SMTP Error: Could not authenticate."
    ["from_failed"]=>
    string(35) "The following From address failed: "
    ["recipients_failed"]=>
    string(45) "SMTP Error: The following recipients failed: "
    ["data_not_accepted"]=>
    string(30) "SMTP Error: Data not accepted."
    ["connect_host"]=>
    string(43) "SMTP Error: Could not connect to SMTP host."
    ["file_access"]=>
    string(23) "Could not access file: "
    ["file_open"]=>
    string(33) "File Error: Could not open file: "
    ["encoding"]=>
    string(18) "Unknown encoding: "
    ["signing"]=>
    string(15) "Signing Error: "
    ["smtp_error"]=>
    string(19) "SMTP server error: "
    ["empty_message"]=>
    string(18) "Message body empty"
    ["invalid_address"]=>
    string(15) "Invalid address"
    ["variable_set"]=>
    string(30) "Cannot set or reset variable: "
  }
  ["error_count:private"]=>
  int(1)
  ["sign_cert_file:private"]=>
  string(0) ""
  ["sign_key_file:private"]=>
  string(0) ""
  ["sign_key_pass:private"]=>
  string(0) ""
  ["exceptions:private"]=>
  bool(false)
}
SMTP -> ERROR: Failed to connect to server: Connection timed out (110)

<br />SMTP Error: Could not connect to SMTP host.
SMTP Error: Could not connect to SMTP host.

电子邮件发送失败!

2 个答案:

答案 0 :(得分:2)

您应将 SMTPSecure 中的 SMTPSecure 值替换为 TLS 。 它将解决您的问题连接到服务器并发送邮件。 我已经测试了你的代码它工作正常。

$mail->SMTPSecure = "tls"; // sets the prefix to the servier //$mail->SMTPSecure = "ssl";

第二次更换是您的重播电子邮件 $mail->AddReplyTo($youremail, "Reply to"); //optional 你给了$emailpassword这是错误的。

答案 1 :(得分:0)

$mail->AddReplyTo($emailpassword, "Reply to") ?????

回复地址==邮件密码?