【问题标题】:php send email using gmail smtpphp使用gmail smtp发送电子邮件
【发布时间】:2013-09-15 14:59:35
【问题描述】:

我正在尝试使用 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.

邮件发送失败!

【问题讨论】:

标签: php email smtp gmail


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    $mail->AddReplyTo($emailpassword, "Reply to") ?????
    

    回复地址==邮件密码?

    【讨论】:

    • 你的眼睛很敏锐 我改了但我仍然收到 SMTP -> 错误:无法连接到服务器:连接超时 (110)
      SMTP 错误:无法连接到 SMTP主持人。 SMTP 错误:无法连接到 SMTP 主机。
    • 我尝试将端口更改为 465 不起作用..可能与 php.ini 配置文件有关。
    • 谢谢,如果你使用 ssl 然后将端口设置为 465,这是一个工作示例:phpmailer.worxware.com/index.php?pg=exampleagmail,并在你的 php.ini 中添加这一行 extension=php_openssl.dll
    • 这是我运行该代码时得到的错误:无法连接到服务器:php_network_getaddresses:getaddrinfo 失败:名称或服务未知(0)
      SMTP 错误:可以未连接到 SMTP 主机。
      SMTP -> 错误:无法连接到服务器:php_network_getaddresses:getaddrinfo 失败:名称或服务未知(0)
      SMTP 错误:无法连接到 SMTP 主机。
      - 我把 $mail->Body = $messagetext;并注释掉 html 附件部分
    • 这是一个网络错误,在shell中尝试“telnet smtp.gmail.com 465”,如果没有连接,那么可能是防火墙,或dns错误。
    猜你喜欢
    • 2015-10-22
    • 2011-08-11
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多