PHPMailer:动态 gmail 转发
PHPMailer: Dynamic gmail forwarding
我不知道我想做的事情是否可行(但发现它本身没有用)。
我无法将我公司的 gmail 帐户 "real.business@gmail.com" 直接用于 PHPMailer。但是,我可以使用中间的 gmail 帐户 "fake.12345.account@gmail.com",它可以启用 "less secure apps",允许 SMTP 验证。
但是我不希望从这个假冒的帐户发送电子邮件。12345.account@gmail.com 帐户(看起来不是特别专业)- 而是公司的 gmail 帐户。
我可以从中介账户发送邮件到real.business@gmail.com;要么通过编辑 PHPMailer 参数,要么通过自动转发来自假冒的电子邮件。12345.account@gmail.com 到公司帐户。
问题在于 real.business@gmail.com 如何能够按照最初的预期成功地通过电子邮件发送电子邮件(或者至少看起来是发件人)。
到目前为止的代码
$Mail = new PHPMailer();
$Mail->IsSMTP(); // Use SMTP
$Mail->Host = "smtp.gmail.com"; // Sets SMTP server for gmail
$Mail->SMTPDebug = 0; // 2 to enable SMTP debug information
$Mail->SMTPAuth = TRUE; // enable SMTP authentication
$Mail->SMTPSecure = "tls"; //Secure conection
$Mail->Port = 587; // set the SMTP port to gmail's port
$Mail->Username = 'fake.12345.account@gmail.com'; // gmail account username
$Mail->Password = 'a_password'; // gmail account password
$Mail->Priority = 1; // Highest priority - Email priority (1 = High, 3 = Normal, 5 = low)
$Mail->CharSet = 'UTF-8';
$Mail->Encoding = '8bit';
$Mail->Subject = 'Mail test';
$Mail->ContentType = 'text/html; charset=utf-8\r\n';
$Mail->From = 'testing.num.101@gmail.com'; //Your email adress (Gmail overwrites it anyway)
$Mail->FromName = 'Testing Again';
$Mail->WordWrap = 900; // RFC 2822 Compliant for Max 998 characters per line
$Mail->addAddress($personEmail); // To: the PERSON WE WANT TO EMAIL
$Mail->isHTML( TRUE );
$Mail->Body = ' Good news '.$personName.'! The email sent correctly!';
$Mail->AltBody = 'This is a test mail';
$Mail->Send();
$Mail->SmtpClose();
if(!$Mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $Mail->ErrorInfo;
exit;
}
所以问题是:没有将电子邮件从假的发送到 $personEmail。12345.account@gmail.com(这很简单),而是如何从假的发送电子邮件。12345.account@gmail.com 到 real.business@gmail.com 这样 real.business@gmail.com 将邮件转发给 $personEmail
PHPMailer 专为发送而生。
您想做的是转发一封电子邮件。这意味着接收电子邮件,然后通过它发送。
您需要的是 php 中的某种 IMAP 客户端,它将允许您 阅读 上的电子邮件假的。12345.account@gmail.com(也许 real.business@gmail.com)。然后保存他们的body和标题并传递给PHPMailer。然后,您可以使用 PHPMailer 来 发送 带有 real.business@gmail.com.
的电子邮件
您所描述的是真正的中继,通常在邮件服务器配置(不是消息)中配置,但您无权访问 gmail 中的任何内容。
您可以在 gmail 中设置允许的别名,但我猜这些不允许与现有的 gmail 帐户名重叠,因为那将是一个主要的安全漏洞。为什么不在主帐户上启用 "less secure apps"?这并不是说它实际上不太安全 - 如果有的话它更好,因为使用 OAuth2 的设置非常复杂且令人不快...
就是说,与其尝试进行所有这些伪造,您可能对 this PR and associated docs 感兴趣。 xoauth 分支很可能会像 PHPMailer 5.2.11 一样合并到 master 并发布而无需任何进一步更改,如果您可以尝试一下,这将非常有帮助。
我不知道我想做的事情是否可行(但发现它本身没有用)。
我无法将我公司的 gmail 帐户 "real.business@gmail.com" 直接用于 PHPMailer。但是,我可以使用中间的 gmail 帐户 "fake.12345.account@gmail.com",它可以启用 "less secure apps",允许 SMTP 验证。
但是我不希望从这个假冒的帐户发送电子邮件。12345.account@gmail.com 帐户(看起来不是特别专业)- 而是公司的 gmail 帐户。
我可以从中介账户发送邮件到real.business@gmail.com;要么通过编辑 PHPMailer 参数,要么通过自动转发来自假冒的电子邮件。12345.account@gmail.com 到公司帐户。
问题在于 real.business@gmail.com 如何能够按照最初的预期成功地通过电子邮件发送电子邮件(或者至少看起来是发件人)。
到目前为止的代码
$Mail = new PHPMailer();
$Mail->IsSMTP(); // Use SMTP
$Mail->Host = "smtp.gmail.com"; // Sets SMTP server for gmail
$Mail->SMTPDebug = 0; // 2 to enable SMTP debug information
$Mail->SMTPAuth = TRUE; // enable SMTP authentication
$Mail->SMTPSecure = "tls"; //Secure conection
$Mail->Port = 587; // set the SMTP port to gmail's port
$Mail->Username = 'fake.12345.account@gmail.com'; // gmail account username
$Mail->Password = 'a_password'; // gmail account password
$Mail->Priority = 1; // Highest priority - Email priority (1 = High, 3 = Normal, 5 = low)
$Mail->CharSet = 'UTF-8';
$Mail->Encoding = '8bit';
$Mail->Subject = 'Mail test';
$Mail->ContentType = 'text/html; charset=utf-8\r\n';
$Mail->From = 'testing.num.101@gmail.com'; //Your email adress (Gmail overwrites it anyway)
$Mail->FromName = 'Testing Again';
$Mail->WordWrap = 900; // RFC 2822 Compliant for Max 998 characters per line
$Mail->addAddress($personEmail); // To: the PERSON WE WANT TO EMAIL
$Mail->isHTML( TRUE );
$Mail->Body = ' Good news '.$personName.'! The email sent correctly!';
$Mail->AltBody = 'This is a test mail';
$Mail->Send();
$Mail->SmtpClose();
if(!$Mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $Mail->ErrorInfo;
exit;
}
所以问题是:没有将电子邮件从假的发送到 $personEmail。12345.account@gmail.com(这很简单),而是如何从假的发送电子邮件。12345.account@gmail.com 到 real.business@gmail.com 这样 real.business@gmail.com 将邮件转发给 $personEmail
PHPMailer 专为发送而生。
您想做的是转发一封电子邮件。这意味着接收电子邮件,然后通过它发送。
您需要的是 php 中的某种 IMAP 客户端,它将允许您 阅读 上的电子邮件假的。12345.account@gmail.com(也许 real.business@gmail.com)。然后保存他们的body和标题并传递给PHPMailer。然后,您可以使用 PHPMailer 来 发送 带有 real.business@gmail.com.
的电子邮件您所描述的是真正的中继,通常在邮件服务器配置(不是消息)中配置,但您无权访问 gmail 中的任何内容。
您可以在 gmail 中设置允许的别名,但我猜这些不允许与现有的 gmail 帐户名重叠,因为那将是一个主要的安全漏洞。为什么不在主帐户上启用 "less secure apps"?这并不是说它实际上不太安全 - 如果有的话它更好,因为使用 OAuth2 的设置非常复杂且令人不快...
就是说,与其尝试进行所有这些伪造,您可能对 this PR and associated docs 感兴趣。 xoauth 分支很可能会像 PHPMailer 5.2.11 一样合并到 master 并发布而无需任何进一步更改,如果您可以尝试一下,这将非常有帮助。