Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php sSMTP From:收割台不工作_Php_Html_Email_Ssmtp - Fatal编程技术网

Php sSMTP From:收割台不工作

Php sSMTP From:收割台不工作,php,html,email,ssmtp,Php,Html,Email,Ssmtp,我的sSMTP设置有问题。它可以很好地发送电子邮件,我正在接收它们,但它完全忽略了我的“发件人:”标题! 发件人地址始终为“http@mydomain.com“如果通过php邮件函数触发sSMPT,或”root@mydomain.com“如果通过以root用户身份登录的ssh会话触发。所以我认为它总是使用当前用户,并将其用作“发件人:”地址 现在我知道您可以设置FromLineOverride=YES以允许使用您自己的发件人地址,我已经在我的sSMPT配置中设置了,但这不起作用。只是完全忽略了这

我的sSMTP设置有问题。它可以很好地发送电子邮件,我正在接收它们,但它完全忽略了我的“发件人:”标题! 发件人地址始终为“http@mydomain.com“如果通过php邮件函数触发sSMPT,或”root@mydomain.com“如果通过以root用户身份登录的ssh会话触发。所以我认为它总是使用当前用户,并将其用作“发件人:”地址

现在我知道您可以设置
FromLineOverride=YES
以允许使用您自己的发件人地址,我已经在我的sSMPT配置中设置了,但这不起作用。只是完全忽略了这一点

以下是我的设置:

sSMTP配置:

 # The user that gets all the mails (UID < 1000, usually the admin)
root=info@mydomain.com

# The mail server (where the mail is sent to), both port 465 or 587 should be acceptable
mailhub=mydomain.com:587

# The address where the mail appears to come from for user authentication.
# rewriteDomain=info@mydomain.com
# i have tried this function above in different ways, doesnt change anything...

# The full hostname
hostname=mydomain.com

# Use SSL/TLS before starting negotiation
UseTLS=Yes
UseSTARTTLS=Yes

# Username/Password
AuthUser=info
AuthPass=password

# Email 'From header's can override the default domain?
FromLineOverride=YES
#获取所有邮件的用户(UID<1000,通常是管理员)
根=info@mydomain.com
#邮件服务器(邮件发送到的位置),端口465或587都应该是可接受的
mailhub=mydomain.com:587
#用于用户身份验证的邮件似乎来自的地址。
#重写域=info@mydomain.com
#我已经用不同的方法尝试了这个函数,没有任何改变。。。
#完整主机名
hostname=mydomain.com
#在开始协商之前使用SSL/TLS
UseTLS=是
UseSTARTTLS=是
#用户名/密码
AuthUser=info
AuthPass=密码
#来自标题的“电子邮件”可以覆盖默认域吗?
FromLineOverride=YES
用于测试邮件功能的php脚本:

<?PHP
    $empfaenger = "user@gmail.com";
    $betreff = "Testing Mailserver";
    $text = "It seems to work";
    $extra = "From:Info <info@mydomain.com>\r\n";
// i have tried "From: Info..." with a space inbetween From: and Info.
    if(mail($empfaenger, $betreff, $text, $extra)) {
        echo 'E-Mail sent';
    }
?>

因此,我没有收到任何错误,邮件已发送完毕,邮件服务器正在我的本地计算机上运行并查看邮件,我可以确认邮件服务器没有更改其发送地址,他只接收从sSMTP获得的信息

我做错了什么

干杯

编辑:按照DannySMc的建议尝试了以下操作

<?PHP
    $empfaenger = "user@gmail.com";
    $betreff = "Testing Mailserver";
    $text = "Seems to work";
    $extra = "From: no-reply@example.com \r\n".
    'Reply-To: no-reply@example.com '."\r\n" .
    "Return-Path: no-reply@example.com\r\n" .
    'X-Mailer: PHP/' . phpversion();
    if(mail($empfaenger, $betreff, $text, $extra)) {
        echo 'E-Mail versendet';
    }
?>


还是不行。我仍然能看到来自中国的邮件http@mydomain.com

尝试以下操作,将其添加到php脚本中:

$email_message = "Something here";
$email_subject = "a subject";
$email_recipient = "test@example.com";
$email_headers = "From: no-reply@example.com \r\n".
    'Reply-To: no-reply@example.com '."\r\n" .
    "Return-Path: no-reply@example.com\r\n" .
    'X-Mailer: PHP/' . phpversion();
mail($email_recipient, $email_subject, $email_message, $email_headers);

我无法解决这个问题。如果其他人有这个问题,你唯一可以尝试的就是
FromLineOverride=YES
如果这不起作用,你就完蛋了

就我而言,我已经从sSMTP改为常规的sendmail,这是一种魅力


Cheers

sSMTP是一种流行的选择,它是docker容器中php邮件中继的简单sendmail替代品。如果有人遇到这个问题,因为他们使用sMTP和Docker容器,并且无法在php电子邮件中正确显示from标头,那么我建议转到msmtp。在标准php docker图像中安装和使用它很容易。

当然可以根据您的需要、电子邮件收件人、内容等进行更改。好的,我尝试了以下方法:在主条目上查看我的编辑,因为我无法在注释中发布代码标记,或者我太笨了……啊,我看到了,不,您不能在注释中发布它,我会看看,因为我的工作有一个设置一个,将看看他们是否可以帮助你!对不起,我的建议帮不了你!有人有什么想法吗?它仍然不起作用。。。我什么都试过了,我是不是忽略了什么?