天道酬勤,学无止境

mail():SMTP服务器响应:550地址在hmailserver上无效错误(mail(): SMTP server response: 550 The address is not valid error on hmailserver)

问题

尽管将php.ini配置为有效的send_from地址,但仍收到此错误。 我知道它是有效的,因为当我从松鼠邮件中发送邮件时它可以工作,但是在php中发送邮件时它就行不通了。 无效地址大概是指send_from地址。 所以我看不出它怎么会认为这是错误的。 这是PHP代码:

$email="tobiasvogel1@googlemail.com";
$subject = "Your New Password";
$from="admin@dayshare.local";
$message = "Your new password is as follows:

xxxxxxxxxxxxxxxxxxxxxxxxxxx

This email was automatically generated.";

      if(!mail($email, $subject,$message,$from)){
         echo ("error");
      }else echo "success";

并在php.ini中:

SMTP = localhost

sendmail_from = admin@dayshare.local
回答1

550不允许送货到该地址

此错误意味着发件人正尝试将电子邮件发送到不允许其发送到的地址。 hMailServer检查IP范围设置后,将生成此消息。 例如,默认的IP范围配置不允许外部用户向其他外部用户发送消息。 这是为了防止人们使用您的服务器发送垃圾邮件。 因此,如果外部用户尝试向其他外部用户发送消息,他将收到此消息。

这就是您得到的错误的含义。 这是从hMailServer文档中获得的。

您是否可以尝试以下方法?

<?php
mail('tobiasvogel1@googlemail.com','Test Email','This is a test email.',"From: tobiasvogel1@googlemail.com");
?>

如果它不起作用,则可能是由于hMailServer中的配置错误,您需要检查hMailServer日志。

回答2

mail()函数的第四个参数不是简单的“ from”。 在您的代码中,您仅传递不带“发件人:”的电子邮件地址-第四个参数用于附加邮件头,因此您必须像这样设置其格式:

mail($email, $subject,$message,"From: admin@dayshare.local\r\nX-Mailer: PHP");

我添加了另一个标头作为示例。

回答3

试试这个,为我工作:

ini_set("sendmail_from", "info@yourdomain.com");
回答4

您需要引号和分号:

$email="tobiasvogel1@googlemail.com";
回答5

这是另一种解决方案-WAMP使用SMTP本地主机发送邮件


记住,每次更改php.ini之后,

您必须重新启动wamp(!!!)

PS在php.ini中,我用过:

SMTP = localhost 
smtp_port = 25 
sendmail_from = your_user@gmail.com

或者如果oyu无法编辑php.ini,请尝试在您的php脚本中插入这些行。

ini_set("SMTP", "localhost");
ini_set("smtp_port", "25");
ini_set("sendmail_from", "your_user@gmail.com");

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在不发送电子邮件的情况下检查电子邮件地址是否存在?(How to check if an email address exists without sending an email?)
    问题 我碰到过此PHP代码,无需发送电子邮件即可使用SMTP检查电子邮件地址。 有没有人尝试过类似的方法或对您有用? 您能告诉客户/用户输入的电子邮件是否正确并且存在吗? 回答1 有时可以使用两种方法来确定收件人是否确实存在: 您可以连接到服务器,然后发出VRFY命令。 很少有服务器支持此命令,但正是为此目的而设计的。 如果服务器以2.0.0 DSN响应,则该用户存在。 VRFY user 您可以发出RCPT ,并查看邮件是否被拒绝。 MAIL FROM:<> RCPT TO:<user@domain> 如果该用户不存在,您将获得5.1.1 DSN。 但是,仅因为未拒绝电子邮件并不意味着该用户存在。 某些服务器会像这样静默丢弃请求,以防止枚举其用户。 其他服务器无法验证用户,并且无论如何都必须接受消息。 还有一种称为灰名单的反垃圾邮件技术,它将使服务器最初拒绝该地址,并期望真正的SMTP服务器将在一段时间后尝试重新发送。 这会弄乱验证地址的尝试。 老实说,如果您尝试验证地址,最好的方法是使用一个简单的正则表达式来阻止明显无效的地址,然后将实际的电子邮件及其链接发送回系统,以验证是否已接收到该电子邮件。 这也可以确保他们的用户输入了他们的实际电子邮件,而不是碰巧属于其他人的轻微错字。 回答2 此处的其他答案讨论了尝试执行此操作时遇到的各种问题。
  • (WAMP / XAMP)使用SMTP本地主机发送邮件((WAMP/XAMP) send Mail using SMTP localhost [closed])
    问题 关门了。 这个问题需要更加集中。 它当前不接受答案。 想要改善这个问题吗? 更新问题,使其仅通过编辑此帖子即可将重点放在一个问题上。 1年前关闭。 改善这个问题 如何从本地SMTP发送邮件(使用Wamp,Xampp等)? PHP mail()似乎无法本地运行。 有人可以给出指示吗? 回答1 如果本地xampp,wamp有问题,您可以使用此库发送电子邮件。 class.phpmailer.php,class.smtp.php在您的电子邮件函数调用的文件中编写此代码 include('class.phpmailer.php'); $mail = new PHPMailer(); $mail->IsHTML(true); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->Username = "your email ID"; $mail->Password = "your email password"; $fromname = "From Name in Email"; $To = trim($email,"\r\n"); $tContent = ''; $tContent .="
  • mail(): SMTP server response: 550 The address is not valid error on hmailserver
    I am getting this error despite configuring php.ini to a valid send_from address. I know it is valid because it works when I send it from squirrel mail but when sending mail in php it will just not work. the invalid address presumably refers to the send_from address. so I can't see how it can think it's wrong. here is the php code: $email="tobiasvogel1@googlemail.com"; $subject = "Your New Password"; $from="admin@dayshare.local"; $message = "Your new password is as follows: xxxxxxxxxxxxxxxxxxxxxxxxxxx This email was automatically generated."; if(!mail($email, $subject,$message,$from)){ echo (
  • 邮件发送退信分析大全/SMTP error, RCPT TO: 550 Relay Deny
    一般情况下,当您发送的邮件无法正常到达收件人时,mail 邮件系统将会自动给您发一封警告信,这封退信通知里面包含了无法正常发送到对方邮件地址的原因,所以绝大多数情况下可以通过退信通知来找出发信失败的原因及解决方式。当您收到退信时,可以选择将您收到的退信通知的原件完整的转发给我们,由我们协助分析退信产生的原因并提供对应的解决方式。或者您可以参照以下的方式,查看退信内容确认退信原因以便找出解决方式。下面这是一个典型的退信的内容,右边对应的是退信内容的含义。Hi. This is the smtp delivery program.I'm afraid I wasn't able to deliver your message to the followingaddresses.This is a permanent error; I've given up. Sorry it didn't work out.=====================================================  您好!  您的邮件不能成功的递送到指定地址。这是一个永久的错误,因此不得不放弃继续递送。, sorry, no mailbox here by that name  错误原因--- Below this line is a copy of the message
  • 企业邮件系统搭建-关于不能往yahoo,sina,hotmail地址发邮件的问题二
    7.Notes服务器HELO域的设置方法具体位置在:服务器---基本---全限定的Internet主机名8.imail的HELO应该是localhost的gen 7.Notes服务器HELO域的设置方法具体位置在:服务器---基本---全限定的Internet主机名 8.imail的HELO应该是 localhost 的general面板上的 Host Name 如Host Name这里是HI.com 那么imail 所用的就是helo HI.com另外 Imail管理面板-》服务-》SMTP-》advance->Hello Message->HIi.com 只不过修改是smtp的banner信息 9.MDaemon Server的HELO在Setup-》Primary Domain-》HELO Domain Name中设定。10Winmail Server的设定:管理工具->系统设置->SMTP设置->基本参数->HELO/EHLO 主机名。可用nslookup命令查找,YourDomain MX preference = 10, mail exchanger =后面的内容即为正确的HELO/EHLO 主机名。如满足以上要求,发到 sina 还是被退回相同的信件,请和 sina 联系。联系方式如下:邮箱地址:antispam@staff.sina.com.cn 或
  • php.ini&SMTP =-如何传递用户名和密码(php.ini & SMTP= - how do you pass username & password)
    问题 My ISP帐户要求我发送出站SMTP邮件的用户名和密码。 执行php.mail()?时,如何让PHP使用此功能php.mail()? php.ini文件仅包含服务器(SMTP= )和From: (sendmail_from= )条目。 回答1 PHP mail()命令不支持身份验证。 您的选择: PHPMailer-教程梨-教程自定义功能-请参阅注释部分中的各种解决方案:http://php.net/manual/zh/ref.mail.php 回答2 我将以下详细信息应用于php.ini文件。 它的作品很好。 SMTP = smtp.example.com smtp_port = 25 username = info@example.com password = yourmailpassord sendmail_from = info@example.com 这些详细信息与Outlook设置相同。 回答3 使用Windows的Fake sendmail发送邮件。 在C:\wamp\创建一个名为sendmail的文件夹。 将以下4个文件提取到sendmail文件夹中: sendmail.exe , libeay32.dll , ssleay32.dll和sendmail.ini 。 然后配置C:\wamp\sendmail\sendmail.ini : smtp
  • mail邮件退信常见错误
    1、邮件地址错误 如果退信原因中有如下信息之一,请检查收信人的邮件地址是否有误。 550 <[email]xxx@xxx.xxx.xx.xx[/email]>...User unknow 550 Requested action not taken:mailbox unavailable 550.5.1.1 <[email]xxx@xxx.xxx.xx.xx[/email]> is not a valid mailbox Sorry, no mailbox here by that name 550 Invalid recipient <[email]xxx@xxx.xxx.xx.xx[/email]> [email]xxx@xxx.xxx.xx.xx[/email](user not found) 如果邮件地址是正确的,那可能对方的这个电子邮件信箱已经不再使用了。为了确定,可再重发一次以防是由于对方邮箱的收件服务器的技术故障而导致的退信。 2、邮箱空间不够 如果退信原因中显示如下信息之一,表示邮箱溢出。 552 Message size exceeds fixed maximum message size(5000000) 552 Message size exceeds maximum message size 552 Message size exceeds fixed
  • 无法在Windows 8上使用php邮件功能发送电子邮件(Can't send email with php mail function on windows 8)
    问题 我已经在Windows 8上安装了wamp。 出现错误: 警告:mail()[function.mail]:无法通过“ localhost”端口25连接到邮件服务器,无法在php.ini中验证您的“ SMTP”和“ smtp_port”设置,或在C:\ wamp \ www \中使用ini_set()第9行的mail.php 这是简单的源代码: <?php // The message $message = "Line 1\r\nLine 2\r\nLine 3"; // In case any of our lines are larger than 70 characters, we should use wordwrap() $message = wordwrap($message, 70, "\r\n"); // Send mail('caffeinated@example.com', 'My Subject', $message); ?> 我必须在Windows 8上安装哪些软件才能通过php通过电子邮件发送电子邮件? sendmail,msmtp或ssmtp? 回答1 尝试这个 配置此设置 在php.ini中 SMTP=smtp.gmail.com smtp_port=587 sendmail_from = my-gmail-id@gmail.com
  • Gmail错误:SMTP服务器需要安全连接,或者客户端未通过身份验证。 服务器响应为:5.5.1需要身份验证(Gmail Error :The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required)
    问题 我正在使用以下代码发送电子邮件。 该代码在我的本地计算机上正常工作。 但是在生产服务器上,我收到错误消息 var fromAddress = new MailAddress("mymailid@gmail.com"); var fromPassword = "xxxxxx"; var toAddress = new MailAddress("yourmailid@yourdoamain.com"); string subject = "subject"; string body = "body"; System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; using (var message = new MailMessage(fromAddress
  • Zabbix监控之邮件发送失败-smtp-server: 错误代码550与535
    原始问题背景:前几天运维同事突然发现zabbix监控上面不再发送邮件了,而zabbix的监控界面状态都是能够显示出来。因为之前出现过类似的问题,估计是163邮箱的问题,于是登陆用于告警的邮箱,直接通过网页发送邮件也同样报错,估计是邮件防垃圾服务进行了限制,需要等到第二天才能恢复(第二天确实恢复正常),但是当天如果需要继续使用zabbix的邮箱监控的话,只能通过更换告警邮箱。于是配置了新的邮箱qixin_monitor@163.com用于告警。新问题如下[root@zabbix_master ~]# tail -n 5 /etc/mail.rc //查看mail.rc的邮箱配置 #setting for zabbix set from=qixin_monitor@163.com smtp=smtp.163.com set smtp-auth-user=qixin_monitor smtp-auth-password=test_haha16 set smtp-auth=login [root@zabbix_master ~]# echo “mail content”|mail -s test 17701754487@163.com [root@zabbix_master ~]# smtp-server: 550 User has no permission //550报错 "/root
  • PHPMailer:SMTP错误:无法连接到SMTP主机(PHPMailer: SMTP Error: Could not connect to SMTP host)
    问题 我在多个项目上使用过PHPMailer,但现在遇到了麻烦。 它给了我错误: SMTP错误:无法连接到SMTP主机。 我已经尝试过从Thunderbird发送电子邮件,并且可以正常工作! 但是不能通过PHPMailer ...这是Thunderbird的设置: 服务器名称:mail.exampleserver.com 端口:587 用户名:user@exampleserver.com 安全身份验证:否连接安全性:STARTTLS 我在上一个使用PHPMailer的项目中将它们与服务器进行了比较,它们分别是: 服务器名称:mail.exampleserver2.com 港口:465 用户名:user@exampleserver2.com 安全身份验证:否连接安全性:SSL / TLS 我的PHP代码是: $mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->Host = SMTP_HOST; // SMTP servers $mail->Port = SMTP_PORT; // SMTP servers $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Username = SMTP_USER; // SMTP username
  • 如何获取mail()函数的错误消息?(How can I get the error message for the mail() function?)
    问题 我一直在使用PHP mail()函数。 如果邮件由于任何原因未发送,我想回显错误消息。 我该怎么做? 就像是 $this_mail = mail('example@example.com', 'My Subject', $message); if($this_mail) echo 'sent!'; else echo error_message; 谢谢! 回答1 如果在Windows上使用SMTP,则当mail()返回false时可以使用error_get_last()。 请记住,这不适用于PHP的本机mail()函数。 $success = mail('example@example.com', 'My Subject', $message); if (!$success) { $errorMessage = error_get_last()['message']; } 使用print_r(error_get_last()) ,您得到的是这样的: [类型] => 2 [消息] => mail():无法通过“ xxxx”端口25连接到邮件服务器,无法验证php.ini中的“ SMTP”和“ smtp_port”设置或使用ini_set() [文件] => C:\ www \ X \ X.php [行] => 2 回答2 用php发送邮件不是一个一步的过程。 mail(
  • PHP邮件功能无法完成电子邮件的发送(PHP mail function doesn't complete sending of e-mail)
    问题 <?php $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $from = 'From: yoursite.com'; $to = 'contact@yoursite.com'; $subject = 'Customer Inquiry'; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; if ($_POST['submit']) { if (mail ($to, $subject, $body, $from)) { echo '<p>Your message has been sent!</p>'; } else { echo '<p>Something went wrong, go back and try again!</p>'; } } ?> 我尝试创建一个简单的邮件表单。 表单本身在我的index.html页面上,但是它提交到单独的“感谢您提交”页面, thankyou.php ,上面的PHP代码嵌入其中。 该代码可以完美提交,但从不发送电子邮件。 我怎样才能解决这个问题? 回答1 尽管此答案的某些部分仅适用于使用mail()函数本身
  • 使用Java发送电子邮件(Send email using java)
    问题 我正在尝试使用Java发送电子邮件: import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) { // Recipient's email ID needs to be mentioned. String to = "abcd@gmail.com"; // Sender's email ID needs to be mentioned String from = "web@gmail.com"; // Assuming you are sending email from localhost String host = "localhost"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); // Get the default Session object. Session
  • SMTP服务器需要安全连接,或者客户端未通过身份验证。 服务器响应为:5.5.1是否需要身份验证?(The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required?)
    问题 我想从我的应用程序发送电子邮件,并且我编写了以下代码来发送邮件 MailMessage msg = new MailMessage(); msg.From = new MailAddress("mymailid"); msg.To.Add("receipientid"); msg.Subject = "test"; msg.Body = "Test Content"; msg.Priority = MailPriority.High; SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("mymailid", "mypassword", "smtp.gmail.com"); client.Host = "smtp.gmail.com"; client.Port = 587; client.DeliveryMethod = SmtpDeliveryMethod.Network; client.EnableSsl = true; client.UseDefaultCredentials = true; client.Send(msg); 我在本地主机上运行它,所以我在发送它时犯了什么错误。 当我发送按钮时,它给出了类似的错误 SMTP服务器需要安全连接
  • linux mailx使用外部smtp发送邮件
    环境:exchange 2010:ip:192.168.101.18域:gz.newp.local用户账户:rajaruan@gz.newp.localsmtp地址:mail.gz.newp.locallinux:rhel 6.3软件:mailxlinux配置:# vim /etc/mail.rc添加如下行:set from=rajaruan@gz.newp.localset smtp=mail.gz.newp.localset smtp-auth=loginset smtp-auth-user=rajaruan@gz.newp.localset smtp-auth-password=’123456a!’windows:为认证用户添加sendas权限,否则linux端会报错哦“错误信息550 5.7 1 client does not have permissions to send as this sender”测试:# mail -v -s “Test” rajaruan@gz.newp.local < /etc/hosts-v:显示发送过程-s:subject,即主题rajaraun@gz.newp.local:收件人< /etc/hosts:邮件正文由/etc/hosts文件导入来源:https://blog.51cto.com/rajaruan/1274808
  • 如何通过Gmail使用简单的SMTP命令发送电子邮件?(How to send email using simple SMTP commands via Gmail?)
    问题 出于教育目的,我需要使用SMTP的基本和简单规则通过SMTP服务器发送电子邮件。 我能够使用smtp4dev做到这一点。 我在telnet localhost 25命令: 我想使用Gmail SMTP服务器做同样的事情。 但是,它需要身份验证和TLS。 我不知道如何针对Gmail执行此操作。 这是telnet smtp.gmail.com 587的屏幕截图: 我搜索并找到了许多链接,包括Wikipedia的有关STARTTLS命令的文章。 但是我无法使用TLS,也无法使用命令行(或以编程语言自行发送命令)对Gmail的SMTP服务器进行身份验证。 有人可以帮忙吗? 回答1 要通过gmail发送,您需要使用加密的连接。 仅靠telnet不可能做到这一点,但是您可以使用openssl之类的工具 可以使用openssl中的starttls选项进行连接,以将普通连接转换为已加密... openssl s_client -starttls smtp -connect smtp.gmail.com:587 -crlf -ign_eof 或直接连接到ssl原型... openssl s_client -connect smtp.gmail.com:465 -crlf -ign_eof EHLO本地主机 之后,使用base64编码的用户名/密码对服务器进行身份验证 AUTH PLAIN
  • PHPMailer GoDaddy服务器SMTP连接被拒绝(PHPMailer GoDaddy Server SMTP Connection Refused)
    问题 前几天,我的GoDaddy托管网站遇到了一些问题。 我打电话给他们的技术支持,与我交谈的人建议我的问题与我在Windows机器上,最好在Linux机器上使用有关。 我对此没有意见,我同意了,他们把我切换了。 过渡之后,我的PHPMailer功能让我迷茫了。 我已经工作了几个月,所以我知道我的设置是正确的。 我已与GoDaddy确认,从他们的角度来看,我要发送的帐户并未更改。 用户侧未进行任何更改(如新密码)。 底线是,唯一不同的是我的站点现在托管在Linux服务器上。 而已。 因此,我认为我的PHPMailer困难必须与此相关,因为一个巧合的是,已经运行了数月的脚本在发生服务器转换的确切时刻失败了。 但为什么? 我花了一个小时来获得他们的技术支持,他们发现服务器设置没有问题。 我们验证了我的设置(只是为了好玩)。 一切看起来不错,但是当我发送电子邮件时,出现此错误: SMTP -> ERROR: Failed to connect to server: Connection refused (111)SMTP Connect() failed. 关于此类错误的帖子很多,几乎所有帖子都与第一次设置的人有关,这些人输入的设置错误或省略了设置。 但是,我知道我的设置是完整且准确的,因为我已经成功使用了几个月。 为了完整起见,我将它们发布在这里: $mail = new
  • PHPMailer-SMTP错误:从我的服务器发送邮件时,密码命令失败(PHPMailer - SMTP ERROR: Password command failed when send mail from my server)
    问题 我已经使用phpmailer()概念使用php脚本从共享服务器向用户发送邮件,但是即使根据phpmailer代码,脚本中的所有内容都正确,我却无法发送邮件。 我的代码是这样的: $message = " This is testing message from my server"; $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->Host = "smtp.gmail.com"; $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; // authentication enabled $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail $mail->Port = 465; // or 587 $mail->IsHTML(true); $mail->Username = "moorthi.mrk10@gmail.com"; // My gmail username $mail->Password = "*****
  • 如何使用PHP检查电子邮件地址是真实的还是有效的(How to check if an email address is real or valid using PHP)
    问题 我找到了一些声称可以验证电子邮件地址是否有效的网站。 是否可以仅使用PHP检查电子邮件地址是否有效? <?php if($_POST['email'] != ''){ // The email to validate $email = $_POST['email']; // An optional sender function domain_exists($email, $record = 'MX'){ list($user, $domain) = explode('@', $email); return checkdnsrr($domain, $record); } if(domain_exists($email)) { echo('This MX records exists; I will accept this email as valid.'); } else { echo('No MX record exists; Invalid email.'); } } ?> <form method="POST"> <input type="text" name="email"> <input type="submit" value="submit"> </form> 这就是我现在所拥有的。 它检查该域是否存在,但不能检查该域上是否存在用户的电子邮件。