php使用gmail smtp发送电子邮件

标签 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) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83eee6c3e4eee2eaefade0ecee" rel="noreferrer noopener nofollow">[email protected]</a>"
string(8) "mypass"
string(18) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fb889e959faf94bb829a939494d5989496" rel="noreferrer noopener nofollow">[email protected]</a>"
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) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="38555d785f55595154165b5755" rel="noreferrer noopener nofollow">[email protected]</a>"
  ["FromName"]=>
  string(18) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dfb2ba9fb8b2beb6b3f1bcb0b2" rel="noreferrer noopener nofollow">[email protected]</a>"
  ["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) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="e18c84a1868c80888dcf828e8c" rel="noreferrer noopener nofollow">[email protected]</a>"
  ["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) "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="f88b9d969cac97b88199909797d69b9795" rel="noreferrer noopener nofollow">[email protected]</a>"
      [1]=>
      string(0) ""
    }
  }
  ["cc:private"]=>
  array(0) {
  }
  ["bcc:private"]=>
  array(0) {
  }
  ["ReplyTo:private"]=>
  array(0) {
  }
  ["all_recipients:private"]=>
  array(1) {
    ["<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="d4a7b1bab080bb94adb5bcbbbbfab7bbb9" rel="noreferrer noopener nofollow">[email protected]</a>"]=>
    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.

邮件发送失败!

最佳答案

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

$mail->SMTPSecure = "tls";//设置服务器的前缀 //$mail->SMTPSecure = "ssl";

第二个替换是您的重播电子邮件 $mail->AddReplyTo($youremail, "回复");//可选 您提供的$emailpassword是错误的。

关于php使用gmail smtp发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813804/

相关文章:

java - 如何使用Java邮件获取未回复的邮件?

c# - 在 asp.net 中发送邮件

smtp - OBIEE 调度报告

python - Heroku 上 Django 的 SMTP 身份验证错误

c# - 发送更大尺寸的附件 asp.net

PHP PDO : Why cause this error in sql statement?

javascript - PHP 比较从 Javascript 插入的值

email - 从 mailto 链接向邮件集添加紧急优先级

php - 使用 PHPThumb 和 Thickbox/Colorbox

php - 您如何记录您的内联 PHP 函数和类?