如何使用阿里云邮件推送服务群发邮件

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
.cn 域名,1个 12个月
简介: EDM(电子邮件营销)已经诞生了很多年,在国内随着很多IM工具的普及,曾经有人断言:邮件将在不久的将来消失,然而从目前来看并没有消失。实际上邮件在很多特定场景是有她的重要用途的。 在亚马孙上购物完成之后,亚马逊会根据我的历史购物记录配合自身的推荐系统,向我推荐可能感兴趣的书籍,这样可以有效地促成转化。

EDM(电子邮件营销)已经诞生了很多年,在国内随着很多IM工具的普及,曾经有人断言:邮件将在不久的将来消失,然而从目前来看并没有消失。实际上邮件在很多特定场景是有她的重要用途的。

在亚马孙上购物完成之后,亚马逊会根据我的历史购物记录配合自身的推荐系统,向我推荐可能感兴趣的书籍,这样可以有效地促成转化。网站注册,忘记密码等服务也有很多用邮件来完成。

最近我有一项需求,我想利用邮件群发来做推广,就是流传已久的EDM营销。原本我以为这事其实没什么难度,找下第三方邮件发送,熟悉下sdk群发邮件就行了,任何事情如果自己没做过,其实是不了解细节的,邮件群发存在很多细节需要注意,记录下这次邮件群发的思考。

首先挑选邮件群发第三方服务,我没有看很多第三方服务,就看了两家,一个是搜狐,另外一个是阿里云。比对下来阿里云的价格更加便宜,所以我就选择了阿里云的邮件推送服务。阿里云的价格如下:
image

点击直达

每天200封免费,超出部分才计费,初始值每天2000封,这个数量是随着发送质量动态调整的,这个需要特别注意,要发送经过验证可达的真实邮箱,否则会被降低每日发送数量,严重的可能被封。被封之后,可以申请解封,但是每个账号只有两次机会,这个特别需要注意。我就因为没有仔细去了解这个规则,被封了一次,如何确保邮箱质量,我在下文将会提到。

想要发送邮件首先你得有个域名。第一步就是到阿里万网申请一个域名,申请域名的步骤这里就不做概述了。使用阿里云的邮件推送服务,需要申请开通这个功能,到申请开通入口,点击申请开通按钮。

进入到阿里云管理控制台—>邮件推送—>发信域名页面,点击右上角的新建域名:
image

点击新建域名之后,在输入框中输入自己的发送域名,这里不建议使用企业邮箱作为域名,这也是阿里云的建议,原因其实很简单,如果大量发送营销推广邮件,会导致邮箱使用异常。所以建议使用二级域名作为发送域名,例如:mail.taobao.com。
image

发信域名添加完成之后,主界面就会出现一条数据。我们需要针对这个发信域名做配置:
image

点击配置链接,将会出现一个配置参数页面,参数页面看上去很复杂,有人可能看到就想放弃了。其实很简单。配置页面总共有4个参数,其中3个参数是必须的。我们只需要把这3项参数复制到万网的解析记录中去就可以了。我们来看下配置参数:(配置参数说明图)
image

其中1 ,2,3参数是必须的,第四个可以忽略。接下来我们要做的就是将上图中配置界面的参数复制到域名解析列表中。打开阿里万网的域名列表(阿里云管理控制台—>域名与网站(万网)—>域名),如图:
image

点击解析链接,进入到解析设置页面,进入页面之后,点击右上角的添加记录按钮,在弹出框中进行设置,弹出框界面如下:
image

简单说下这几个参数,记录类型:记录类型就是将上文中提到过的(配置参数说明图)中的4种类型,全部添加进来。主机记录也是参照上文(配置参数说明图)的主机记录,将图中的主机记录复制过来即可。解析线路保持默认即可。记录值:记录值就是在(配置参数说明图)中有一个”记录值”的一列,只需要把这一列的值复制过来就行了,有木有很简单。

总共需要添加4次记录就完成了解析设置,添加完成之后,界面是这样的:
image

域名解析完成之后,下一步就是发信地址(阿里云管理控制台-->邮件推送-->发信地址)的配置了:
image

新建发信地址如下:
image

发信域名选项选择已经配置完成的发信域名即可,账号输入,例如我的账号是这样的:service@mail.taobao.com。回信地址如果没有就不必填写,我没用过回信地址,所以我在这里是没有填写的。发信类型选择批量邮件。

发信地址设置完成,列表页面就会出现刚才添加的记录了:
image

这里需要注意一点,上图中有一个选项:设置SMTP密码。如果你想用smtp协议来发送邮件,那么就需要设置smtp密码。发送邮件有两种方式,一种是smtp,另一种是使用阿里云自身的sdk,使用sdk用的是阿里云提供的密钥。如果选择smtp方式发送,那么就设置下smtp密码。

至此,所有的设置步骤已经完成了,接下来就是发送的过程了。我是使用了smtp方式作为邮件发送的。主要考虑是以下几点。用阿里云的sdk发送,需要用到accessSecret,accessSecret拥有账号的所有权限,我的代码又是托管到git服务器上的,所以为了安全起见用了smtp方式。

原文地址

阿里云本身也提供了子账号的accessSecret权限,建立子账号后,可以规定子账号的权限,比如可以建立一个只能发送邮件的子账号accessSecret。这样就可以保证安全性。

smtp发送的代码非常简单,主要用到了第三方的类库,代码如下:

js

public class MailService {

privatestatic MailService mailService;

publicstatic MailService getInstance(String username, String pwd, String smtp,String port) {

    if (mailService== null) {

        mailService=new MailService(username, pwd, smtp,port);

        return mailService;

    }else {

        return mailService;

    }

}

private final transient Properties props = System.getProperties();

/**

/ *邮件服务器登录验证/

/ */

private transient MailAuthenticator authenticator;

/**

/ *邮箱session/

/ */

private transient Session session;

private MailService(String username, String pwd, String smtp,String port) {

    authenticator =new MailAuthenticator(username, pwd);

    props.put("mail.smtp.auth", "true");

    props.put("mail.smtp.host", smtp);

    props.put("mail.smtp.port",port);

    session = Session.getInstance(props, authenticator);

}

//**/

/ *发送邮件/

/ */

/ /@param*/recipient 收件人邮箱地址/

/ /@param*/subject 邮件主题/

/ /@param*/content 邮件内容/

/ /@throws*/AddressException/

/ /@throws*/MessagingException/

/ *//

public void send(String recipient, String subject, String content)

        throws MessagingException {

    final MimeMessage message = new MimeMessage(session);

    message.setFrom(new InternetAddress(authenticator.getUsername()));

    message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(recipient));

    message.setSubject(subject);

    message.setContent(content, "text/html;charset=utf-8");

    Transport.send(message);

}

//**/

/ *群发邮件/

/ */

/ /@param*/recipients收件人们/

/ /@param*/subject 主题/

/ /@param*/content 内容/

/ /@throws*/AddressException/

/ /@throws*/MessagingException/

/ *//

public void send(List recipients, String subject, String content) throws MessagingException {

    final MimeMessage message = new MimeMessage(session);

    message.setFrom(new InternetAddress(authenticator.getUsername()));

    final int num = recipients.size();

    InternetAddress[] addresses = new InternetAddress[num];

    for (int i = 0; i < num; i++) {

        addresses[i] = new InternetAddress(recipients.get(i));

    }

    message.setRecipients(MimeMessage.RecipientType.TO, addresses);

    message.setSubject(subject);

    message.setContent(content, "text/html;charset=utf-8");

    Transport.send(message);

}

}

以上需要引用java.mail类库:

javax.mail

1.5.6

阿里云的配置信息如下:

mail.aliyunUsername=service@mail.taobao.com

mail.aliyunAuthorizationCode=

你的smtp密码

mail.aliyunSmtp=smtpdm.aliyun.com

mail.aliyunPort=25

以上就是使用阿里云发送邮件的全过程了,总体上还是比较简单的。下面再来说说需要注意的地方。

阿里云每日的发送量是有限的,这个根据你的邮箱发送质量决定,初始值是2000,之后会根据你的邮箱质量动态调整。起初我发送了很多没有验证过的邮箱导致我被封,所以在大量发送邮件之前,请确保你的邮箱是真实可达的。

邮件群发到这里就介绍完了,主要介绍了阿里云的配置,还有遇到的问题和需要注意的地方,码字不易,如果对你有帮助,欢迎点赞。详细可以查看阿里云邮件推送文档

目录
相关文章
|
7月前
|
搜索推荐 API 数据库
电子邮箱群发邮件工具?
电子邮箱群发邮件工具?
|
自然语言处理 算法 数据安全/隐私保护
教你如何用代码自动群发邮件(邮件轰炸机)
教你如何用代码自动群发邮件(邮件轰炸机)
1302 0
教你如何用代码自动群发邮件(邮件轰炸机)
|
3月前
详细教程:扫码提交表单后,数据直接推送到企业微信、钉钉、飞书群聊
在草料制作的表单中,填表人扫码填写并提交数据后,这些信息可以立即通过企业微信、钉钉或飞书自动推送到相应的群聊中,实现即时共享和沟通,提升团队协作效率。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之消息通知不会触发邮件提醒是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
5月前
|
敏捷开发 jenkins 测试技术
阿里云云效产品使用合集之配置了邮箱但仍然无法接收到邮件通知,是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用合集之配置了邮箱但仍然无法接收到邮件通知,是什么导致的
|
开发者
手把手教你微信公众号如何给指定用户发送消息提醒
消息提醒功能是提升用户满意度的最有效方式,基于微信聊天的消息提醒也是现在最常见的消息提醒方式之一,
手把手教你微信公众号如何给指定用户发送消息提醒
|
Prometheus 运维 监控
三分钟实现Prometheus电话短信邮件钉钉飞书企业微信报警
Spug推送助手针对Prometheus内置好了报警模板,可以通过简单的配置就可以实现Prometheus电话、短信、邮件、钉钉、飞书、企业微信等报警。
1642 0
|
弹性计算 运维 监控
使用阿里云Serverless——实现监控邮箱收件箱,并自动回复女神消息功能
借阿里云本次活动,使用Serverless函数计算配合Python,实现监控邮箱收到的女神消息,并且自动回复舔狗邮件功能。 Happy Ending!Serverlesss助力常威抱得女神归!
897 0
使用阿里云Serverless——实现监控邮箱收件箱,并自动回复女神消息功能
|
IDE 开发工具 Android开发
Python实现告警通知到微信,还免费?
Python实现告警通知到微信,还免费?
413 0
Python实现告警通知到微信,还免费?
|
机器人 Java
Java后台推送告警信息到钉钉
Java后台推送告警信息到钉钉的实现
722 0
Java后台推送告警信息到钉钉