我没有成功使用php mail()函数发送邮件。
我想使用我托管的邮箱地址:postmaster@my_domain.com。
托管是使用Windows服务器的'perso'优惠。
在使用邮件功能之前,是否要对php进行一些配置?
我可以访问php.ini吗?
或者可能在ovh manager中检查/取消选中。
我在谷歌上搜索并尝试了一些解决方案,但我找到了很多东西,我不知道什么是有用的。
我已向OVH技术支持发送请求,但我仍在等待答案。
现在,我已经完成了一个非常基本的脚本来测试该函数,但它不发送邮件:
<?php
$headers ='From: postmaster@my_domain.com'."\n";
$headers .='Reply-To: postmaster@my_domain.com'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if( mail('valid_destination_adress@gmail.com', 'test mail', 'Message of the mail', $headers) ){
echo 'ok';
}else{
echo 'erreur';
}
?>
答案 0 :(得分:2)
警告:mail():无法连接到“localhost”端口25的邮件服务器,验证php.ini中的“SMTP”和“smtp_port”设置或使用ini_set()
这意味着邮件正在尝试通过localhost发送。但是ovh为邮件提供了一个特定的域名:smtp.mydomain.com
。因此,您必须使用ini_set()
,因为您无法更改共享主机上的php.ini
:
ini_set("SMTP", "smtp.mydomain.com");
ini_set("sendmail_from", "postmaster@mydomain.com");
$headers ='From: postmaster@my_domain.com'."\n";
$headers .='Reply-To: postmaster@my_domain.com'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
if (
mail(
'valid_destination_adress@gmail.com',
'test mail',
'Message of the mail',
$headers
)
){
echo 'ok';
} else {
echo 'erreur';
}
echo "Check your email now....<br/>";
但我建议您使用一个库,例如SwiftMailer或PHPMailer
答案 1 :(得分:0)
您的代码看起来是正确的,因此它肯定不是PHP问题,除非该功能未被停用。如果您有权访问,则应检查SMTP服务器的日志。或者,您可以尝试使用一个小的PHP库进行邮件发送,大多数已知的库提供了出色的异常处理和日志记录功能,
答案 2 :(得分:0)
我建议你使用Swiftmailer(http://swiftmailer.org/)
发送电子邮件就像下载库一样简单,解压缩,包含主.php文件,例如这行代码:
require 'lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
->setUsername(SENDER_USERNAME)
->setPassword(SENDER_PASSWORD);
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($subject)
->setFrom(array(MAIL_FROM))
->setTo(array(MAIL_TO))
->setBody($message);
$result = $mailer->send($message);
如您所见,应该简单配置您的smtp服务器或现有邮件提供,如gmail示例中所示。