各位前輩們好,最近剛學習php,嘗試使用phpmailer寄發信件,卻遇上SMTP connect() failed的問題。
已經有至gmail帳戶的地方開啟「低安全性應用程式存取權」,在本地端測試寄信是沒問題的,但是當我把檔案丟上000webhost平台再進行寄發信件就會跳出SMTP connect() failed
請問該如何解決?
2021/08/27補
<用平台開phpinfo()之後的SMTP設定>
SMTP: localhost / localhost
smtp_port: 25 / 25
我有嘗試這個連結的做法
但是在extract item那一步出現「 ftp_put(): Can't open that file: No such file or directory」的問題
// 如果發問有哪裡不清楚的話可以再補
先PO一下你的 phpmailer 設定檔 (帳密可以用 user 替代)
大大是指這個嗎?(這是參考其他人寫的格式
</script>
</head>
<body>
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$C_name=$_POST['C_name'];
$C_email=$_POST['C_email'];
$C_message=$_POST['C_message'];
$mail= new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->CharSet = "utf-8";
$mail->Username = "xxx@gmail.com";
$mail->Password = "xxxxxx";
$mail->From = "xxx@gmail.com";
$mail->FromName = "xxx";
$mail->Subject ="來自<".$C_name.">的留言";
$mail->Body = "姓名:".$C_name."<br>信箱:".$C_email."<br>回應內容:".$C_message;
$mail->IsHTML(true);
$mail->AddAddress("$C_email");
if(!$mail->Send()){
echo "Error: " . $mail->ErrorInfo;
}else{
echo "5秒後進行頁面跳轉……";
}
?>
</body>
試著將 PHPMailer/SMTP 也use 進去試試。
我自已是固定這些都會USE
PHPMailer
SMTP
Exception
OAuth
不過其實你的錯誤因該不是這個問題才對。
看你的發信程式,也沒啥問題。
或許先檢查一下是不是465 PORT發不出去好了。
搞不好不是程式問題。
USE了這三個,剛剛嘗試發信還是一樣
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
我有嘗試這個連結的做法
請先完全照抄範例
只改必要的地方(eg.帳密,寄收件者)
如果成功了
再逐漸改成你要的結果
以下是我看到的差異處之一
port 由 465 改成 587
$mail->Port = 587; // TLS only
$mail->SMTPSecure = 'tls'; // ssl is deprecated
port跟tls的部分都改了目前還是一樣狀況
上面的連結卡在extract item那一步出現「 ftp_put(): Can't open that file: No such file or directory」
我不懂你的 extract item 是指
1.程式的那一段
2.extract phpmailer.zip
看起來「ftp_put():Can't ....」這訊息跟 smtp 扯不上什麼關係...
圖片中這一步,依照他的改好然後按右下角extract之後就跑出 ftp_put(): Can't open that file: No such file or directory的訊息不給過,也不確定這步跳過沒做會不會影響到後面,所以就沒有往下做了
https://www.000webhost.com/forum/uploads/default/original/3X/0/9/09121b80ec5c86456f3e33e30531bdb54af1404f.png
phpmailer的設定檔是照著網上其他人的做法去改我需要的部分
在本地端測試是成功發信且可以收到的
但是丟上000webhost平台再測試就無法發送
所以在想是哪個部分沒設定好還是單純這個平台不能使用這個功能
這動作是「安裝 phpmailer」,而且是必要的
看來
大家都誤會你的問題了
都有人跟你說要用465 port,還要開啟TLS支援(SSL不能用了)
怎麼還在25?