Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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 我如何发送像craiglist这样的电子邮件?_Php_Email - Fatal编程技术网

Php 我如何发送像craiglist这样的电子邮件?

Php 我如何发送像craiglist这样的电子邮件?,php,email,Php,Email,我正试图从我的网站向用户发送电子邮件,就像craiglist那样。(例如,当用户A回复用户B的帖子时,会向用户A发送一封电子邮件,通知用户A已经回复了他的帖子。然后,用户B可以在其电子邮件客户端(如gmial/hotmail)中按下回复按钮,回复电子邮件将发送给用户A,并且任何进一步的通信将严格在他们两人之间进行,仅限我的服务器。)(在最初的电子邮件中。) 目前,我已经编写了一个函数,在成功注册后向用户发送电子邮件,我正在考虑修改该函数,以便在上述情况下使用。但是,我不确定如何执行该函数,因为我

我正试图从我的网站向用户发送电子邮件,就像craiglist那样。(例如,当用户A回复用户B的帖子时,会向用户A发送一封电子邮件,通知用户A已经回复了他的帖子。然后,用户B可以在其电子邮件客户端(如gmial/hotmail)中按下回复按钮,回复电子邮件将发送给用户A,并且任何进一步的通信将严格在他们两人之间进行,仅限我的服务器。)(在最初的电子邮件中。)

目前,我已经编写了一个函数,在成功注册后向用户发送电子邮件,我正在考虑修改该函数,以便在上述情况下使用。但是,我不确定如何执行该函数,因为我似乎无法更改函数中的“发件人”字段

注意,我对编程还是个新手,目前正在使用PHP和Swiftmailer来处理我的电子邮件

我的职能:

function Activation($email,$token){
$transport=Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
    ->setUsername('test@gmail.com')
    ->setPassword('testpass');

$mailer=Swift_Mailer::newInstance($transport);
$message=Swift_Message::newInstance()
    ->setSubject('Account activation')
    ->setFrom(array('mymail@gmail.com' => '*Website name*'))
    ->setTo(array($email => $email))
    ->setBody("

        Thank you for registering with us. Before we can activate your account one last step must be taken to complete your registration.
        <br />
        <br />
        Please note - you must complete this last step to become a registered member. You will only need to visit this URL once to activate your account.
        <br />
        <br />
        To complete your registration, please visit this URL:
        <a href=http://localhost/test/account/activate.php?code=$token >http://localhost/test/account/activate.php?code=".$token."</a>
        <br />
        <br />
        **** Does The Above URL Not Work? ****
        If the above URL does not work, please go to the following link into your browser:
        http://localhost/test/account/activate.php
        <br />
        <br />
        Please be sure not to add extra spaces. You will need to type in your email and activation code on the page that appears when you visit the URL.
        <br />
        <br />
        Your email is: ".$email."
        <br />
        Your Activation code is: ".$token."
        <br />
        <br />
        If you are still having problems signing up please contact a member of our support staff at *contactemail*
        <br />
        <br />
        All the best



        ","text/html");

    if (!$mailer->send($message))
    {
        throw new Exception('Message sending failed');
    }
}
功能激活($email,$token){
$transport=Swift\u SmtpTransport::newInstance('smtp.gmail.com',465',ssl')
->setUsername('test@gmail.com')
->setPassword('testpass');
$mailer=Swift\u mailer::newInstance($transport);
$message=Swift\u message::newInstance()
->setSubject(“帐户激活”)
->setFrom(数组('mymail@gmail.com“=>”*网站名称*))
->setTo(数组($email=>$email))
->立根体(”
感谢您向我们注册。在我们激活您的帐户之前,必须采取最后一步来完成您的注册。


请注意-您必须完成最后一步才能成为注册会员。您只需访问此URL一次即可激活您的帐户。

要完成注册,请访问以下URL:

****上面的URL不起作用吗**** 如果上述URL无效,请转到浏览器中的以下链接: http://localhost/test/account/activate.php

请确保不要添加额外的空间。您需要在访问URL时显示的页面上键入电子邮件和激活码。

您的电子邮件是:“.$email”
您的激活码是:“.$token。”

如果您在注册时仍有问题,请通过*contactemail联系我们的支持人员*

祝你一切顺利 “,”文本/html“; 如果(!$mailer->send($message)) { 抛出新异常(“消息发送失败”); } }

任何帮助都将不胜感激。

Craigslist会在您发布邮件时为您创建一个临时转发地址(@crigslist.com)。因此,当第一个用户发送电子邮件时,它会被重新路由到其他用户的电子邮件地址


大多数SMTP提供商不允许您冒充他人的电子邮件地址。这是有道理的,因为您可能不希望不可信的人能够从您的地址发送电子邮件。

您在第一段中描述的不是craigslist的功能。craigslist将充当所有电子邮件通信之间的中介这样双方都不知道对方的真实电子邮件地址

这显然非常复杂,需要有自己的邮件服务器、翻译表和pop/smtp cron作业

但是,如果您想完成您第一次描述的内容,这是相当简单的。只需使用发件人标题和ReplyTo标题,如本回答中所述:

显然,您可以通过简单地更改传入
setFrom()的值来更改
FROM
,但是,还有更多。如果你试图以其他电子邮件域的名义发送邮件,你可能会遇到严重的电子邮件不可容忍性问题,因为如果你的邮件超过发送的SMTP,它将以很高的速率被标记为垃圾邮件。你真的在钻研一个非常复杂的问题,一个你必须诚实对待的问题ly可能不应该作为一名初级程序员涉猎。@MikeBrant感谢您花时间回复。我已尝试更改setFrom()字段,但setFrom()字段中的电子邮件不会显示在发送的电子邮件中。相反,电子邮件显示为从setUsername()发送我知道这可能有点复杂,有没有其他更简单的解决方案和/或阅读材料/教程可以指给我看?