我使用的mail()
基本示例略微修改了我的用户ID,我收到错误“Mailer Error:无法实例化邮件功能”
如果我使用邮件功能 -
mail($to, $subject, $message, $headers);
它工作正常,但我在发送html时遇到问题,这就是为什么我在尝试PHPMailer。
这是代码:
<?php
require_once('../class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
print ($body ); // to verify that I got the html
$mail->AddReplyTo("reply@domain.com","my name");
$mail->SetFrom('from@domain.com', 'my name');
$address = "to@domain.com";
$mail->AddAddress($address, "her name");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$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!";
}
?>
答案 0 :(得分:26)
尝试使用 SMTP 发送电子邮件: -
$mail->IsSMTP();
$mail->Host = "smtp.example.com";
// optional
// used only when SMTP requires authentication
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';
答案 1 :(得分:11)
$mail->AddAddress($address, "her name");
应改为
$mail->AddAddress($address);
这适用于我的案例..
答案 2 :(得分:10)
您需要确保您的发件人地址是该服务器上的有效电子邮件帐户设置。
答案 3 :(得分:10)
这对我有用
$mail->SetFrom("from@domain.co","my name", 0); //notice the third parameter
答案 4 :(得分:5)
您的代码看起来不错,您是否忘记在服务器上安装PostFix?
sudo apt-get install postfix
它对我有用;)
干杯
答案 5 :(得分:3)
this specific error上的PHPMailer帮助文档帮助我走上了正确的道路。
我们发现php.ini没有定义sendmail_path,所以我用sendmail_path = /usr/sbin/sendmail -t -i;
添加了
答案 6 :(得分:1)
在我的情况下似乎只是服务器拒绝。请检查您的邮件服务器日志/ smtp连接可访问性。
答案 7 :(得分:1)
我遇到了这个问题,经过一些调试和搜索后我意识到SERVER(Godaddy)可能有问题。
我建议您与您的网络托管服务提供商联系,并与他们讨论关于邮件功能的 Quota Restrictions
(他们这样做是为了防止人们使用垃圾邮件机器人或群发电子邮件(垃圾邮件))。
他们可能会告诉你他们的极限,如果你超过他们。您也可以通过访问私人服务器来升级限制。
在与GoDaddy交谈15分钟后,技术支持人员能够在20分钟内解决此问题。
这对我帮助很大,我想分享它,所以如果其他人遇到这个,他们可以尝试这种方法,如果一切都失败,或者在他们尝试其他任何事情之前。
答案 8 :(得分:1)
就我而言,正是附件大小限制导致了问题。检查并增加对我有用的邮件的大小限制。
答案 9 :(得分:0)
一个老线程,但它可能会帮助像我这样的人。我通过在PHP.ini
中将SMTP服务器值设置为合法值来解决了该问题答案 10 :(得分:0)
我也有这个问题。我的解决方案是禁用selinux。我尝试在selinux中允许2个不同的http设置(类似于httpd_allow_email和http_can_connect)并且不起作用,所以我完全禁用它并开始工作。
答案 11 :(得分:0)
我在发送名称中包含区域字符的文件时出现此问题,例如:VęryRęgióńął file - name.pdf
。
解决方法是在将文件名附加到电子邮件之前清除文件名。
答案 12 :(得分:0)
检查sendmail是否已启用,主要是如果您的服务器是由其他公司提供的。
答案 13 :(得分:0)
为了解决这个问题,我不得不进入cPanel并看到错误消息
“注意!请通过cpanel插件注册非smtp邮件中使用的电子邮件ID。通过脚本发送的非smtp电子邮件中将不允许使用未注册的电子邮件ID。转到邮件部分,然后在中找到“已注册的邮件ID”插件纸灯笼主题。”
在cPanel中注册电子邮件(注册邮件ID)并等待10分钟即可开始工作。
希望能帮助某人。
答案 14 :(得分:0)
我的配置:IIS + php7.4
我遇到了与@ Salman-A相同的问题,在该问题中,通过电子邮件发送小附件,但通过大附件导致页面出错。 我增加了php.ini中的文件和附件限制,但这没什么区别。
然后,我在IIS(6.0)中找到一个配置,并在那里增加了文件限制。
这也是我的mail.php:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '../_PHPMailer-master/src/Exception.php';
require '../_PHPMailer-master/src/PHPMailer.php';
try{
$email = new PHPMailer(true);
$email->SetFrom('internal@email.com', 'optional name');
$email->isHTML(true);
$email->Subject = 'my subject';
$email->Body = $emailContent;
$email->AddAddress( $eml_to );
$email->AddAttachment( $file_to_attach );
$email->Send();
}catch(phpmailerException $e){echo $e->errorMessage();}
我希望这对以后的人有所帮助。
答案 15 :(得分:-1)
我们需要在php.ini文件中更改“SMTP”的值 php.ini文件位于
EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.ini