本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

使用 sendgrid 通过 SMTP 发送电子邮件

发布于2024-10-30 12:32     阅读(1038)     评论(0)     点赞(25)     收藏(4)


我有一个 html 字段集和一个简短的 php 文件,用于在单击提交按钮时通过 sendgrid 发送电子邮件。

HTML

            <form id="contact-form" action="scripts/mailer.php" method="post">
                <fieldset form="#contact-form">
                    <legend>Contact Form</legend>
                    <label class="input-field-name">Name:<br />
                        <input class="input-field" type="text" name="name" required/>
                    </label><br />
                    <label class="input-field-name">Email:<br />
                        <input class="input-field" type="text" name="email" required/>
                    </label><br />
                    <label class="input-field-name">Message Title:<br />
                        <input class="input-field" type="text" name="header" required/>
                    </label><br />
                    <label class="input-field-name">Message:<br />
                        <textarea class="message-field" type="text" name="message" required></textarea>                            
                    </label><br />
                    <button id="submit-button" type="submit">Submit</button>
                </fieldset>
            </form>

PHP

<?php

require_once('sendgrid-php/sendgrid-php.php');

$name = $_POST["name"];
$email = $_POST["email"];
$header = $_POST["header"];
$message = $_POST["message"];

$from = new SendGrid\Email(null, $email);
$subject = $header;
$to = new SendGrid\Email(null, "MY EMAIL ADDRESS");
$content = new SendGrid\Content("text/plain", $message);
$mail = new SendGrid\Mail($from, $subject, $to, $content);

$apiKey = 'MY API KEY';
$sg = new \SendGrid($apiKey);

$response = $sg->client->mail()->send()->post($mail);
if($response->statusCode() == 202){
    echo "Email sent successfully";
}else{
    echo "Email could not be sent";
}

echo $response->statusCode();
var_dump($response->headers());
echo $response->body(); 

我在 GoDaddy 上托管我的网站,从我读过的所有内容来看,我相信这应该可以工作,但我收到 http 错误 500,我的网站无法处理该请求。

有办法解决这个问题吗?谢谢


解决方案


我管理的服务器之一是 GoDaddy,当使用 SendGrid 的 SMTP 服务发送电子邮件时,设置以下附加字段至关重要:

$username = 'apikey';
$host = 'ssl://smtp.sendgrid.net';
$port = 587;

设置用户名时,请使用如上所示的字符串“apikey”,而不是您的实际 apikey。GoDaddy 在使用端口 587 时似乎运行良好,当将主机设置为上述值时,它将安全地发送您的电子邮件。

此后您的电子邮件应该可以正常工作。祝您好运。




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/534077/6fd8edea59e917545b6c/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

25 0
收藏该文
已收藏

评论内容:(最多支持255个字符)