这是一个我知道的新手问题。但是我无法找到这个问题的答案。
我制作了一些利用自动电子邮件功能的网站。我用PHP制作了这个网站。我所做的每一个网站,在邮件部分,我都遇到了一些“裁员”。让我举一个例子,来自PHPMailer库的例子:
name := gjson.Get(json, "name")
mother := gjson.Get(json, "parents.mother")
在这两个陈述中,我认为存在裁员: $mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'mail.domail.com';
$mail->SMTPAuth = true;
$mail->Username = 'someuser@domain.com'; // SMTP username
$mail->Password = 'secret';
$mail->Port = 587;
$mail->setFrom('someuser@domain.com', 'Mailer');
$mail->addAddress('to@gmail.com', 'Joe User'); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
和$mail->Username = "someuser@domain.com; $mail->Password = 'secret';"
。这是我的问题?如果我已经提供了用户名和密码,为什么我需要提供“发件人”地址。不要只是登录我的电子邮件帐户并发送它?如果我提供用户名,为什么还要提供“来自”地址?反之亦然。
有人可以解释为什么mailling系统会像这样工作吗?我有alson在python的标准mailling库中看到了类似的结构。
答案 0 :(得分:0)
因为“from”不必与您的登录用户名相同。您可以尝试向自己发送不同值的邮件,并检查收件箱或垃圾邮件文件夹以查看结果。
答案 1 :(得分:0)
在Microsoft Exchange服务器(仅作为示例)中,当应用了正确的权限时,您可以在邮箱登录下Send As
多个用户邮箱。因此,在这种情况下,如果您使用PHPMailer将邮件发送到Microsoft Exchange服务器并进行身份验证,您将使用相同的凭据来访问您的邮箱,但随后在From
中指定您要发送的邮箱变量。
除上述内容外,From
是当前SMTP标准(RFC 821)的一部分,在与SMTP服务器通信时使用必须。所以这意味着所有使用SMTP的邮件服务器都应该要求From
字段符合此标准,尽管他们知道谁在发送电子邮件。