如何向我的 gmail 发送电子邮件而不是托管

Posted

技术标签:

【中文标题】如何向我的 gmail 发送电子邮件而不是托管【英文标题】:How to send an email to my gmail rather than hosting 【发布时间】:2016-05-08 00:11:03 【问题描述】:

因此,我从头开始构建自己的网站,并希望创建一个电子邮件功能。现在我想这样做,这样用户就不必使用 Outlook 或其他任何东西来向我发送电子邮件,我想要它以便他们可以通过单击按钮将其发送给我。

现在这基本上是我现在使用的要点

mail($to, $subject, $body);

但是,这仅在我将电子邮件设置为托管服务器电子邮件 (byethost) 时才有效。我尝试将其设置为我的 gmail 帐户,但没有成功。

那么,我该怎么做才能让它向我的 gmail 发送电子邮件

【问题讨论】:

【参考方案1】:

如果只是为了好玩,可以考虑使用 Sengrid 的一个选项,它非常简单有效。在 byethost email() 功能不起作用。 收到APIKEY 后,您可以轻松设置电子邮件。这是来自github的php代码:

$sendgrid = new SendGrid('YOUR_SENDGRID_APIKEY');
$email = new SendGrid\Email();
$email
    ->addTo('foo@bar.com')
    ->setFrom('me@bar.com')
    ->setSubject('Subject goes here')

    ->setText('Hello World!')
    ->sethtml('<strong>Hello World!</strong>')
;

$sendgrid->send($email);

// Or catch the error

try 
    $sendgrid->send($email);
 catch(\SendGrid\Exception $e) 
    echo $e->getCode();
    foreach($e->getErrors() as $er) 
        echo $er;
    

您有一个免费计划,每月有足够多的免费电子邮件。

【讨论】:

【参考方案2】:

在将用户(网站访问者)查询发送给网站管理员(gmail 帐户)的一个项目中,我遇到了类似的情况。已通过 Ajax 调用发送表单上收集的详细信息来完成此操作,并将其发布到使用 Postfix 发送邮件的 php 文件中。 (该网站托管在 Ubuntu 服务器上)。

页面中的 JQuery 代码如下所示。

$("#btn_email").click(function () 
            //get input field values data to be sent to server
            post_data = 

                'vemail': $('input[name=email]').val(),
                'query'  : $('input[name=query]').val(),
                'subject': 'New Query',
                'msg': 'There is new request for query'
            ;

            //Ajax post data to server
            $.post('sendmail.php', post_data, function (response) 
                if (response.type == 'error')  //load json data from server and output message
                    output = '<div class="error">' + response.text + '</div>';
                 else 
                    output = '<div class="success">' + response.text + '</div>'; );

处理请求的 PHP 代码

$email=$_POST['email'];
$subject = 'New Query';
$headers = 'From:'. $email . "\r\n"; // Sender's Email
$message = $_POST['msg']. "\r\n" .$_POST['query'] . "\r\n\r\nEmail : " . $email ;
$message = wordwrap($message, 70);
// Send Mail By PHP Mail Function
$send_mail = mail("mycontact@gmail.com", $subject, $message, $headers); 
if(!$send_mail)

    //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
    $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
    die($output);
else
    $output = json_encode(array('type'=>'message', 'text' => 'Hi, We have added '.$user_email .' to the query. Will answer you soon. Thank you for your interest.'));
    die($output);



【讨论】:

【参考方案3】:

您说您在托管服务器电子邮件 (byethost) 中收到邮件,但在 gmail 帐户中没有。但是你应该在gmail中收到邮件。你会检查你的垃圾邮件文件夹吗?如果您发送的邮件带有正确的电子邮件标题,它应该会进入您的收件箱。 check here complete-mail-header

为了避免服务器配置问题,您可以使用PHP mailer。您还可以使用此配置 IMAP 和 POP3

【讨论】:

【参考方案4】:

您需要 SMTP 才能使用您的 gmail 发送邮件。 PHPMailer 是我经常使用的。

https://github.com/PHPMailer/PHPMailer

【讨论】:

以上是关于如何向我的 gmail 发送电子邮件而不是托管的主要内容,如果未能解决你的问题,请参考以下文章

将旧电子邮件地址重定向到MX记录的Gmail地址?

Gmail 不会从我在 Android 上的应用程序发送附件

忘记密码没有向我的Gmail帐户发送邮件[重复]

为什么我无法从我在GCP中托管的应用使用Gmail SMTP发送电子邮件?

用于发送带有附件的电子邮件的 GMAIL API

GMail 显示纯文本电子邮件而不是 HTML