我正在嘗試使用PHP發送郵件。
但它只是不起作用。我聯繫了我的IT老師,我認識的幾位IT研究員,大學工作,但他們都無法幫助我。我知道關於這個的stackoverflow有很多問題,這就是爲什麼我等了很長時間才能發佈這個。但是我查看了所有關於PHP的mail()函數的問題,我找不到,也沒有解決我的問題。我非常絕望。
使用PHP發送郵件對我無效
問題是,它不能使用我的代碼來創建郵件,但它在使用純文本功能時也不起作用。所以這讓我想到問題必須是服務器端。我聯繫了one.com(這是我的網站燒掉的地方),但他們無法幫助我。他們說mail()函數應該可以工作。他們沒有給我這個:
Sushant: - 郵件主機:mailout.one.com
Sushant: - 端口:25
Sushant: - 驗證:無/假
Sushant: - 安全:無/假
Sushant : - 用戶名:您的域名的電子郵件帳戶例如[email protected]
Sushant: - 密碼:您的電子郵件帳戶的密碼
我不知道如何處理這些信息做。我嘗試使用ini_set()函數編輯php.ini文件中的一些內容( mail.add_x_header,mail.log,SMTP,smtp_port,sendmail_from,sendmail_path)。也沒有解決我的問題。
我全碼:
(遺憾的荷蘭語)
$onderwerp = "E-mail adres controlleren";
$bericht ="
U bent succesvol geregistreerd bij theovisser.com.<br>
Nu kunt u alle verstuurde nieuwsbrieven lezen. Ook kunt u<br>
nieuwe nieuwsbrieven meteen zien, nog voordat ze bij op op de mat liggen!<br><br>
Om uw account te activeren moet u alleen nog wel de onderstaande code<br>
invoeren.<br>
E-mail code: " .$_SESSION['controle_code']. "<br><br>
Groeten,<br>
Samuël Visser
";
// Regels in berichten mogen nooit langer zijn als 70 caracters (PHP regel).
// Hiermee worden alle regels die langer als 70 caracters zijn ingekort.
$bericht = wordwrap($bericht, 70);
// Verstuur de mail
if(!isset($_SESSION['mail_verstuurd']))
{
if(mail($email,$onderwerp,$bericht)){
echo 'Er is een mail verstuurd naar uw adres.<BR><BR>';
$_SESSION['mail_verstuurd']='true';
}else{
echo 'Het versturen van de mail is mislukt.<BR><BR>';
}
}
這並不做任何事情。
而最古怪的是,這並沒有太多的工作:
mail('[email protected]','test','dit is een test');
你們能解決我的問題?我真的不知道我做錯了什麼。
編輯:
使用從@ojovirtual建議使用的PHPMailer libary,我得到了以下錯誤:
2014年11月4日13點27分48秒的連接:開放mailout.one .com:25,t = 300,opt = array()2014-11-04 13:28:10 SMTP錯誤:無法連接到服務器:連接嘗試失敗,因爲連接方在一段時間後沒有正確響應時間或建立的連接失敗,因爲連接的主機尚未回覆。 (10060)2014-11-04 13:28:10 SMTP connect()失敗。無法發送郵件。郵件錯誤:SMTP連接()失敗
錯誤中的斜體樣式文本是荷蘭文,它被翻譯成英文。可能與原始英文翻譯有點不同。
這是我用過的設置,我從one.com得到數據如下:
require($main .'PHPMailer-master/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->SMTPDebug=3;
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'mailout.one.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = false; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'won't show that here :)'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25; // TCP port to connect to
$mail->From = '[email protected]';
$mail->FromName = 'Samuël Visser';
$mail->addAddress('[email protected]', 'Sammie gast'); // Add a recipient
//$mail->addAddress('[email protected]'); // Name is optional
//$mail->addReplyTo('[email protected]', 'Information');
//$mail->addCC('[email protected]');
//$mail->addBCC('[email protected]');
$mail->WordWrap = 50; // Set word wrap to 50 characters
//$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
我曾經建議PHPMailer的頁面上的代碼。
感謝您的幫助!
在發送郵件之前,您可能需要登錄到SMTP服務器。我推薦使用[PHPMailer](https://github.com/PHPMailer/PHPMailer)。 – ojovirtual 2014-11-04 12:31:52
在郵件中添加「標題」 – 2014-11-04 12:31:58
標題是可選的,對吧?我沒有做任何事情來登錄到SMTP服務器,每個人都告訴我你不需要這些。但我會嘗試這個庫,謝謝 – 2014-11-04 12:48:15