因工作需要在本機方便測試,記得去年用localhost可以寄gmail
現在的設定如下:
//設定的code
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Username = $mygmail;
$mail->Password = $mygmailpw;
//---以下略
失敗訊息
SMTP ERROR: Failed to connect to server: (0) SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
相同的code若放在雲端主機運作一切正常,請教這是不是哪邊出問題?
程式碼給你參考:
https://www.webteach.tw/?p=1132
你說你有開openssl
那你有設好憑證嗎?不是有開就好,再來你也要打開443 465 port
試試看PHPMailer 6.0.2 (https://github.com/PHPMailer/PHPMailer)
SSL或TLS都沒問題。
如果您將PHPMailer的debug模式開到詳細以上的等級,應該會看到請使用瀏覽器開啟某某連結以繼續
表示除了低安全性之外,還要授權存取權限(這個動作在程式移動到新主機就要做一次)
https://accounts.google.com/b/0/DisplayUnlockCaptcha
在頭一次寄信之前進入授權頁面點下確認後再繼續進行送信操作即可
P.S.看您的code似乎PHPMailer版本很低,基於安全性的考量建議提升到5.2.22以上
我也出現了同樣情況
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
phpmailer 版本是5.2.23
$mail = new PHPMailer();
$mail->SMTPDebug = 2;
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "xxxx@gmail.com";
$mail->Password = "password";
$mail->From = "xxxx@gmail.com";
$mail->FromName = "username";
$mail->IsHTML(true);
$mail->Subject = "subject";
$mail->Body = "body";
$mail->Send();
可能要將google的"允許安全性較低的應用程式"開啟,路徑在我的帳戶→登入和安全性→具有帳戶存取權的應用程式,如下圖: