我试着用mailgun发送电子邮件。我用的是node.js(nest.js),这是我的邮件服务。我应该改变什么?当我试着发送第一封电子邮件时(在mailgun官方网站中有描述),我收到了同样的错误信息。
import { Injectable } from '@nestjs/common';
import * as Mailgun from 'mailgun-js';
import { IMailGunData } from './interfaces/mail.interface';
import { ConfigService } from '../config/config.service';
@Injectable()
export class MailService {
private mg: Mailgun.Mailgun;
constructor(private readonly configService: ConfigService) {
this.mg = Mailgun({
apiKey: this.configService.get('MAILGUN_API_KEY'),
domain: this.configService.get('MAILGUN_API_DOMAIN'),
});
}
send(data: IMailGunData): Promise<Mailgun.messages.SendResponse> {
console.log(data);
console.log(this.mg);
return new Promise((res, rej) => {
this.mg.messages().send(data, function (error, body) {
if (error) {
console.log(error);
rej(error);
}
res(body);
});
});
}
}
当我尝试发送消息时,我收到401错误,带有禁止的描述。
我的mg(控制台.日志(此. mg))
Mailgun {
username: 'api',
apiKey: '920d6161ca860e7b84d9de75e14exxx-xxx-xxx',
publicApiKey: undefined,
domain: 'lokalne-dobrodziejstwa.pl',
auth: 'api:920d6161ca860e7b84d9de75e14exxx-xxx-xxx',
mute: false,
timeout: undefined,
host: 'api.mailgun.net',
endpoint: '/v3',
protocol: 'https:',
port: 443,
retry: 1,
testMode: undefined,
testModeLogger: undefined,
options: {
host: 'api.mailgun.net',
endpoint: '/v3',
protocol: 'https:',
port: 443,
auth: 'api:920d6161ca860e7b84d9de75e14exxx-xxx-xxx',
proxy: undefined,
timeout: undefined,
retry: 1,
testMode: undefined,
testModeLogger: undefined
},
mailgunTokens: {}
}
我的电子邮件正文
{
from: 'rejestracja@lokalne-dobrodziejstwa.pl',
to: 'me@gmail.com',
subject: 'Verify User',
html: '\n' +
' <h3>Hello me@gmail.com!</h3>\n' +
' '
}
7条答案
按热度按时间ljsrvy3e1#
当我的域名在欧盟区域时,我遇到了这个问题。当你使用欧盟区域时,你必须在配置中指定它--Mailgun没有清楚地解释这一点。
所以应该是这样的:
2fjabf4q2#
欧盟用户:对于mailgun v3,您必须在
mailgun.client()
的url选项中指定eu端点,如下所示:vc6uscn93#
尝试通过控制台中的此命令向自己发送电子邮件(帐户电子邮件):
有效果吗?
如果它不是..我假设你已经写了API和域正确,所以以后如果你有免费的帐户,你应该检查授权recipant概述部分(你不能发送电子邮件到任何地方,你想在试用帐户,你必须先键入它)
x1c 0d1x如果你没有找到解决方案,这是我如何做我的mailService(工作),所以你可以尝试一下,我用nodemailer这样做:
和
定义包含内容的html文件的位置及其外观(本例中为reset-password.html):
{{}}中的值将自动被库替换
在本示例中,ResetPasswordReplacement是其唯一基本对象,包含3个属性,并由空接口IReplacement继承-使其仅用于模板文件中定义的值
资料来源:
nbewdwxp4#
从mailgun API v3起,您必须:
kd3sttzy5#
要使用mailgun API,白名单您的服务器IP,从那里你要使用mailgun网络控制台发送电子邮件。
设置〉安全和用户〉API安全〉IP白名单
yacmzcpb6#
如果您仍在使用golang脚本寻找答案,请添加以下行
//当您有EU域时,必须指定终结点
ecbunoof7#
另一个可能发生在我身上的案例是:
我最初用npm安装了mailgun-js,并开始使用yarn代替,然后它在每个请求中都返回401 Forbidden,所以
yarn add mailgun-js
解决了这个问题。