让Hostmonster的网站程序也能发送邮件
程序员文章站
2022-06-15 21:50:46
...
HostMonster网站程序一般无法发送邮件,因为端口25阻塞了。
许多ISP屏蔽了端口25的使用,而该端口是用来发送邮件的。他们这样做是为了减少垃圾邮件的发送量。所有通过Internet发送的 e-mail 都要通过端口25, 该通道用来进行e-mail 客户端和 e-mail服务器之间的通信。
虽然端口25屏蔽很可能成为一个工业标准,但是过滤器会给 e-mail服务器带来麻烦,导致正常的邮件被当成垃圾邮件处理。
端口25屏蔽可以帮助网络服务供应商们阻止垃圾信息在他们的网络上的传播,但是这样的话,会给那些有需求使用e-mail服务器发送邮件的人带来麻烦,这些服务器不仅仅是他们自己的ISP提供的。
屏蔽端口25的网络服务供应商要求使用他们的SMTP服务器,而不是远程SMTP服务器或自己电脑上运行的SMTP服务器。
还好的是,HostMonster开放了26端口给SMTP服务器。
我们先到 CPanel -> Email Accounts,创建一个邮件账户。
然后到 CPanel -> webmail -> Configure Mail Client,可以得到下面配置信息:
Manual Settings Mail Server Username: bkjia+bkjia.com Incoming Mail Server: mail.bkjia.com Incoming Mail Server: (SSL) host.hostmonster.com Outgoing Mail Server: mail.bkjia.com (server requires authentication) port 26 Outgoing Mail Server: (SSL) host.hostmonster.com (server requires authentication) port 465 Supported Incoming Mail Protocols: POP3, POP3S (SSL/TLS), IMAP, IMAPS (SSL/TLS) Supported Outgoing Mail Protocols: SMTP, SMTPS (SSL/TLS)
提示:smtp服务器是 mail.yourdomain.com,端口是26,帐号是你的邮箱的完整地址 xxxx@xxx.com,密码就是你的邮箱密码。按照提示设置好,就可以使用hostmonster主机提供的SMTP服务了。
示例程序如下,程序使用了PHPmailer库:
function mailto($nickname, $address) { $this->load->helper('url'); date_default_timezone_set('PRC'); include_once("application/controllers/class.phpmailer.php"); $mail = new PHPMailer(); // defaults to using php "mail()" $mail->IsSMTP(); // telling the class to use SMTP $mail->IsHTML(true); $mail->Host = "mail.bkjia.com"; // SMTP server $mail->SMTPDebug = 1; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->Host = "mail.bkjia.com"; // sets the SMTP server $mail->Port = 26; // set the SMTP port for the GMAIL server $mail->Username = "bkjia@bkjia.com"; // SMTP account username $mail->Password = "********"; // SMTP account password $mail->CharSet="utf-8"; //$body = file_get_contents('application/views/nmra/register.html'); //$body = preg_replace('/\\\\/','', $body); //Strip backslashes $body = ''; $body .= ''; //$body .= ''; $body .= ''; //echo $body; $mail->AddReplyTo("bkjia@163.com","Gonn"); $mail->SetFrom('bkjia@163.com', 'Gonn'); $mail->AddReplyTo("bkjia@163.com","Gonn"); $mail->AddAddress($address, $nickname); $subject = "收到来自帮客之家的邮件"; $mail->Subject = "=?UTF-8?B?".base64_encode($subject)."?="; // optional, comment out and test $mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; $mail->MsgHTML($body); //$mail->AddAttachment("images/phpmailer.gif"); // attachment //$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment if(!$mail->Send()) { //echo "Mailer Error: " . $mail->ErrorInfo; } else { //echo "Message sent!"; } }'.$nickname.',您好。
'; $body .= '请点击以下链接验证您的邮箱,请注意域名为bkjia.com:'.base_url().'accounts/activation/'; $body .= '顺祝工作学习愉快,生活舒心。
'; $body .= '
OK,现在网站程序就能发邮件了。但是并非所有邮箱都能收到,这里测试的话,163,gmail等都能正常收到,而qq则收不到。如果你有更好的方法,请告知我,感谢。