php使用SMTP发送电子邮件

时间:2013-09-15 00:07:26

标签: php ajax email smtp

我有一个Android HTML5 php应用程序,我想让用户通过Gmail或Yahoo向其他人发送电子邮件。这是我使用的代码

<?php


$smtp=$_GET["smtp"];
$youremail= $_GET["youremail"];   
$emailpassword=$_GET["emailpassword"]; 
$companyemail=$_GET["companyemail"]; 
$messagetitle= $_GET["messagetitle"];
$messagetext=$_GET["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->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";

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

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

$mail->IsHTML(true);

$mail->Subject = "$messagetitle";

$mail->Body = "$messagetext";

if(!$mail->Send())
{
echo $mail->ErrorInfo;
}else{
echo "email was sent";

}

}


?>

我得到的错误是: 地址无效:mysmtppassxxxxSMTP - &gt;错误:无法连接到服务器:连接超时(110)


SMTP错误:无法连接到SMTP主机。 SMTP错误:无法连接到SMTP主机

当我做var_dump($ email)时,我得到了

object(PHPMailer)#1 (53) {
  ["Priority"]=>
  int(3)
  ["CharSet"]=>
  string(10) "iso-8859-1"
  ["ContentType"]=>
  string(9) "text/html"
  ["Encoding"]=>
  string(4) "8bit"
  ["ErrorInfo"]=>
  string(0) ""
  ["From"]=>
  string(18) "me@gmail.com"
  ["FromName"]=>
  string(18) "me@gmail.com"
  ["Sender"]=>
  string(0) ""
  ["Subject"]=>
  string(4) "test"
  ["Body"]=>
  string(10) "my 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(18) "me@gmail.com"
  ["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) "jvkrneta@yahoo.com"
      [1]=>
      string(0) ""
    }
  }
  ["cc:private"]=>
  array(0) {
  }
  ["bcc:private"]=>
  array(0) {
  }
  ["ReplyTo:private"]=>
  array(1) {
    ["me@gmail.com"]=>
    array(2) {
      [0]=>
      string(18) "me@gmail.com"
      [1]=>
      string(8) "Reply to"
    }
  }
  ["all_recipients:private"]=>
  array(1) {
    ["joovkrneta@yahoo.com"]=>
    bool(true)
  }
  ["attachment:private"]=>
  array(0) {
  }
  ["CustomHeader:private"]=>
  array(0) {
  }
  ["message_type:private"]=>
  string(0) ""
  ["boundary:private"]=>
  array(0) {
  }
  ["language:protected"]=>
  array(0) {
  }
  ["error_count:private"]=>
  int(0)
  ["sign_cert_file:private"]=>
  string(0) ""
  ["sign_key_file:private"]=>
  string(0) ""
  ["sign_key_pass:private"]=>
  string(0) ""
  ["exceptions:private"]=>
  bool(false)
}

1 个答案:

答案 0 :(得分:1)

$mail->AddAddress()部分的语法无效。

将其从$mail->AddAddress("$emailChunks[$i]");更改为$mail->AddAddress("${emailChunks[$i]}");

基本上,解析器无法识别下标不是字符串的一部分。

本文更深入地解释了它:Can I subscript an array variable inside a double quoted PHP string?