使用 PHPMailer、Mailgun 和 HTTP 发送电子邮件 api
Send email using PHPMailer, Mailgun and HTTP api
我可以通过该网络服务器发送电子邮件
我在使用 godaddy 的共享 Web 服务器上,它在很多方面对我来说都很棒。我在这里托管我网站的两个方面:public wordpress 网站和员工内部网。没错,它有两个方面,我定制的内部网托管在 wordpress 站点旁边。我可以发送电子邮件。
我发送电子邮件的方式是通过 wordpress 的 Mailgun 插件。据我所知,这是我的网络服务器现在发送电子邮件的唯一方式。我试过 PhpMailer 和 phpmail() vanilla,它们都没有做深蹲。
我正在使用 mailgun 作为我的邮件服务器,到目前为止它运行良好。我将 wordpress 插件与忍者表单一起使用,我对表单的所有提交都会通过电子邮件发送到我的电子邮箱。 MX 条目和 txt 文件都已设置,所以这不是我的问题。
当程序在本地托管时,我能够使用该程序发送电子邮件
我知道从 Intranet 发送的电子邮件配置正确,因为它在本地托管时整天都在工作。当它在本地托管时,我通过 php mail() 发送 [我知道,我知道,别开玩笑了],它运行良好。然而,当我将内部网联机时,我开始收到零电子邮件。
go daddy 基本上告诉我“嗡嗡声”。他们说无论我指向哪个 smtp 服务器,他们都看不到试图通过他们发送电子邮件的记录。无论是什么主机,无论是什么域,无论是什么,他们都看不到试图发送的电子邮件。
我有另一个 mx 条目,我相信是因为我们的 office 365 电子邮件服务器。
由于 godaddy,这个 mx 条目引起了我的注意。该 mx 入口指向 outlook。据我所知,这阻碍了我的 smtp 能力。
那么mailgun插件是如何发送邮件的呢? HTTP。
我知道,我知道,这听起来很奇怪。这对我来说也很奇怪,我可以在互联网上找到一个甚至谈论它的网站,它是 On our site。它似乎在说您可以通过 http 发送电子邮件信息,邮件服务器对其进行解码并通过 smtp 发送电子邮件。我认为这将是在我的网站上发送电子邮件的最简单方法,因为它是 Mailgun 插件所做的。
我怎么知道 Mailgun 插件使用 http 而不是 smtp?
Mailgun Plugin configuration
因此,该插件要求我提供 api 密钥和域名,仅此而已。我希望做的是弄清楚如何使用我的 php 代码来做到这一点。 Phpmailer 没有我能找到的相关文档,Mailgun 建议使用 Phpmailer 或 Wordpress 插件。
我破解了插件,一头雾水
我会形容自己 Php 尝试。这对我来说太多了。我认为允许插件执行的代码是这样的
public function api_call($uri, $params = array(), $method = 'POST')
{
$options = get_option('mailgun');
$apiKey = (defined('MAILGUN_APIKEY') && MAILGUN_APIKEY) ? MAILGUN_APIKEY : $options['apiKey'];
$domain = (defined('MAILGUN_DOMAIN') && MAILGUN_DOMAIN) ? MAILGUN_DOMAIN : $options['domain'];
$time = time();
$url = $this->api_endpoint.$uri;
$headers = array(
'Authorization' => 'Basic '.base64_encode("api:{$apiKey}"),
);
switch ($method) {
case 'GET':
$params['sess'] = '';
$querystring = http_build_query($params);
$url = $url.'?'.$querystring;
$params = '';
break;
case 'POST':
case 'PUT':
case 'DELETE':
$params['sess'] = '';
$params['time'] = $time;
$params['hash'] = sha1(date('U'));
break;
}
// make the request
$args = array(
'method' => $method,
'body' => $params,
'headers' => $headers,
'sslverify' => true,
);
// make the remote request
$result = wp_remote_request($url, $args);
if (!is_wp_error($result)) {
return $result['body'];
} else {
return $result->get_error_message();
}
}
如果不是这样,两个主要文件在评论中,因为我的声誉。
另类希望
我知道这可能是不可能的。如果是的话,我认为有两种选择,可能还有更多。我看到的两种选择是以 Ninja Form 发送电子邮件的方式发送我的电子邮件到这个插件,但我不知道如何去做。第二种是强制 phpmailer 通过 outlook mx 条目,并通过 smtp 发送。我将如何去做这件事也超出了我的范围。欢迎任何其他建议或解决方案。
您应该在发帖前进行搜索。 GoDaddy 阻止出站 SMTP,但它们提供了一个网关供您使用。这会阻止许多发送场景(例如 GoDaddy 未通过 SPF 检查)。 MX 记录与 出站 邮件完全无关。
您可以将 PHPMailer 与 MailGun 等 HTTP 服务结合使用,使用它为您构建消息。像通常在 PHPMailer 中那样构建消息,然后调用 preSend()
和 getSentMIMEMessage()
而不是 send()
。然后,您将获得可以提交给 HTTP API.
的完整消息
我可以通过该网络服务器发送电子邮件
我在使用 godaddy 的共享 Web 服务器上,它在很多方面对我来说都很棒。我在这里托管我网站的两个方面:public wordpress 网站和员工内部网。没错,它有两个方面,我定制的内部网托管在 wordpress 站点旁边。我可以发送电子邮件。
我发送电子邮件的方式是通过 wordpress 的 Mailgun 插件。据我所知,这是我的网络服务器现在发送电子邮件的唯一方式。我试过 PhpMailer 和 phpmail() vanilla,它们都没有做深蹲。
我正在使用 mailgun 作为我的邮件服务器,到目前为止它运行良好。我将 wordpress 插件与忍者表单一起使用,我对表单的所有提交都会通过电子邮件发送到我的电子邮箱。 MX 条目和 txt 文件都已设置,所以这不是我的问题。
当程序在本地托管时,我能够使用该程序发送电子邮件
我知道从 Intranet 发送的电子邮件配置正确,因为它在本地托管时整天都在工作。当它在本地托管时,我通过 php mail() 发送 [我知道,我知道,别开玩笑了],它运行良好。然而,当我将内部网联机时,我开始收到零电子邮件。
go daddy 基本上告诉我“嗡嗡声”。他们说无论我指向哪个 smtp 服务器,他们都看不到试图通过他们发送电子邮件的记录。无论是什么主机,无论是什么域,无论是什么,他们都看不到试图发送的电子邮件。
我有另一个 mx 条目,我相信是因为我们的 office 365 电子邮件服务器。
由于 godaddy,这个 mx 条目引起了我的注意。该 mx 入口指向 outlook。据我所知,这阻碍了我的 smtp 能力。
那么mailgun插件是如何发送邮件的呢? HTTP。
我知道,我知道,这听起来很奇怪。这对我来说也很奇怪,我可以在互联网上找到一个甚至谈论它的网站,它是 On our site。它似乎在说您可以通过 http 发送电子邮件信息,邮件服务器对其进行解码并通过 smtp 发送电子邮件。我认为这将是在我的网站上发送电子邮件的最简单方法,因为它是 Mailgun 插件所做的。
我怎么知道 Mailgun 插件使用 http 而不是 smtp?
Mailgun Plugin configuration 因此,该插件要求我提供 api 密钥和域名,仅此而已。我希望做的是弄清楚如何使用我的 php 代码来做到这一点。 Phpmailer 没有我能找到的相关文档,Mailgun 建议使用 Phpmailer 或 Wordpress 插件。
我破解了插件,一头雾水
我会形容自己 Php 尝试。这对我来说太多了。我认为允许插件执行的代码是这样的
public function api_call($uri, $params = array(), $method = 'POST')
{
$options = get_option('mailgun');
$apiKey = (defined('MAILGUN_APIKEY') && MAILGUN_APIKEY) ? MAILGUN_APIKEY : $options['apiKey'];
$domain = (defined('MAILGUN_DOMAIN') && MAILGUN_DOMAIN) ? MAILGUN_DOMAIN : $options['domain'];
$time = time();
$url = $this->api_endpoint.$uri;
$headers = array(
'Authorization' => 'Basic '.base64_encode("api:{$apiKey}"),
);
switch ($method) {
case 'GET':
$params['sess'] = '';
$querystring = http_build_query($params);
$url = $url.'?'.$querystring;
$params = '';
break;
case 'POST':
case 'PUT':
case 'DELETE':
$params['sess'] = '';
$params['time'] = $time;
$params['hash'] = sha1(date('U'));
break;
}
// make the request
$args = array(
'method' => $method,
'body' => $params,
'headers' => $headers,
'sslverify' => true,
);
// make the remote request
$result = wp_remote_request($url, $args);
if (!is_wp_error($result)) {
return $result['body'];
} else {
return $result->get_error_message();
}
}
如果不是这样,两个主要文件在评论中,因为我的声誉。
另类希望
我知道这可能是不可能的。如果是的话,我认为有两种选择,可能还有更多。我看到的两种选择是以 Ninja Form 发送电子邮件的方式发送我的电子邮件到这个插件,但我不知道如何去做。第二种是强制 phpmailer 通过 outlook mx 条目,并通过 smtp 发送。我将如何去做这件事也超出了我的范围。欢迎任何其他建议或解决方案。
您应该在发帖前进行搜索。 GoDaddy 阻止出站 SMTP,但它们提供了一个网关供您使用。这会阻止许多发送场景(例如 GoDaddy 未通过 SPF 检查)。 MX 记录与 出站 邮件完全无关。
您可以将 PHPMailer 与 MailGun 等 HTTP 服务结合使用,使用它为您构建消息。像通常在 PHPMailer 中那样构建消息,然后调用 preSend()
和 getSentMIMEMessage()
而不是 send()
。然后,您将获得可以提交给 HTTP API.