php发送电子邮件使用gmail smtp [英] php send email using gmail smtp

查看:774
本文介绍了php发送电子邮件使用gmail smtp的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to send email by using Gmail (maybe even Yahoo SMTP ) , I have the following code

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进行调试目的我得到

When I call the code - I use var_dump for debugging purpose I get

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.

电子邮件发送失败!

推荐答案

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

You should replace the SMTPSecure value from SSL to TLS. It will resolve your issue connect to the Server and mail was sent. I have tested your code it is working fine.

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

第二个替换是你的电子邮件是
$ mail-> AddReplyTo($ youremail,Reply to); //可选
您已经给出了 $ emailpassword 它是错误的。

Second Replacement is your replayto email $mail->AddReplyTo($youremail, "Reply to"); //optional You have given $emailpassword it is wrong.

这篇关于php发送电子邮件使用gmail smtp的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆