1

我没有成功使用 php mail() 函数发送邮件。

我想使用我在托管时拥有的邮件地址:postmaster@my_domain.com。

托管是使用 Windows 服务器的“个人”优惠。

在使用邮件功能之前是否需要在 php 上进行一些配置?

我可以访问 php.ini 吗?

或者在ovh管理器中检查/取消选中的东西。

我在谷歌上搜索并尝试了一些解决方案,但我发现了很多东西,我不知道什么有用或没有用。

我也向 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';
}
?>
4

3 回答 3

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/>";

但我建议为此使用库,例如​​ SwiftMailerPHPMailer

于 2013-10-10T09:17:47.633 回答
0

Your code looks correct, so it is surely not a PHP problem, unless the function is not deactivated. You should check the logs of your SMTP server if you have access. Alternatively you can try uisng a tiny PHP library for mailing, most of the known libraries provide an excellent exception handling and logging possibilities,

于 2013-10-10T09:02:07.447 回答
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 示例中所示。

于 2013-10-10T09:38:40.993 回答