100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

时间:2018-09-14 08:24:28

相关推荐

Java实现邮件发送 超详细!!!(以QQ邮箱个人版和企业版为例)

Java实现发送邮件 超详细!!!(以QQ邮箱个人版和企业版为例)

文章目录

Java实现发送邮件 超详细!!!(以QQ邮箱个人版和企业版为例)个人邮箱示例配置依赖简单了解涉及的两个传输协议QQ邮箱中获取对应的权限配置文件工具类JavaBean测试类结果企业邮箱示例一:配置文件二:用管理员账号授予邮箱对应权限三:获取授权码**需要注意:现在很多服务器运营商都封25端口了!主要是防止垃圾邮件,不过一般是可以申请开启的**

个人邮箱示例

配置依赖

<!--发送邮件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

简单了解涉及的两个传输协议
SMTP协议:

发送邮件:我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器)。

POP3协议:

接收邮件:我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器)。

QQ邮箱中获取对应的权限

QQ邮箱需要安全验证,我们需要获取他对应的权限

配置文件

#发送邮件配置# SMTP服务器的地址,这是QQ的,其他的邮箱要改一下spring.mail.host=#发送方的邮箱spring.mail.username=xxxxxxx@#这里刚刚获得的16位授权码spring.mail.password=xxxxxxxxxxxxxx# 设置是否需要认证,如果为true,那么用户名和密码就必须的,# 如果设置false,可以不设置用户名和密码,当然也得看你的对接的平台是否支持无密码进行访问的。spring.mail.properties.mail.smtp.auth=true# STARTTLS 是对纯文本通信协议的扩展。它提供一种方式将纯文本连接升级为加密连接(TLS或SSL),而不是另外使用一个端口作加密通信。spring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=truespring.mail.default-encoding=UTF-8

工具类

@Component@Slf4jpublic class MailUtil {@Value("${spring.mail.username}")private String sender; //邮件发送者@Resourceprivate JavaMailSender javaMailSender;/*** 发送文本邮件** @param mail*/public void sendSimpleMail(Mail mail) {try {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom(sender); //邮件发送者mailMessage.setTo(mail.getRecipient()); // 邮件发给的人mailMessage.setSubject(mail.getSubject()); // 邮件主题mailMessage.setText(mail.getContent()); // 邮件内容//mailMessage.copyTo(copyTo);javaMailSender.send(mailMessage);log.info("邮件发送成功 收件人:{}", mail.getRecipient());} catch (Exception e) {log.error("邮件发送失败 {}", e.getMessage());throw new BusinessException(BusinessExceptionCode.EMAIL_FORMAT_ERROR); //这是我自定义的一个异常码}}//复杂邮件// MimeMessage mimeMessage = mailSender.createMimeMessage();// MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);// messageHelper.setFrom("jiuyue@");// messageHelper.setTo("September@");// messageHelper.setSubject("BugBugBug");// messageHelper.setText("一杯茶,一根烟,一个Bug改一天!");// messageHelper.addInline("bug.gif", new File("xx/xx/bug.gif"));// messageHelper.addAttachment("bug.docx", new File("xx/xx/bug.docx"));// mailSender.send(mimeMessage);}

JavaBean

public class Mail implements Serializable {private static final long serialVersionUID = 4359709211352400087L;private String recipient;//邮件接收人private String subject; //邮件主题private String content; //邮件内容}

测试类

@SpringBootTestpublic class SpringbootMailApplicationTests {@Resourceprivate MailUtil mailUtil;//接收人private static final String recipient = "bugbugbug@";/*** 发送文本邮件*/@Testpublic void sendSimpleMail() {Mail mail = new Mail();int code = (int) ((Math.random() * 9 + 1) * 100000);mail.setRecipient(recipient);mail.setSubject("修改邮箱");mail.setContent("亲爱的用户:您好!\n" +"\n" + " 您收到这封电子邮件是因为您 (也可能是某人冒充您的名义) 申请了修改邮箱。假如这不是您本人所申请, 请不用理会这封电子邮件, 但是如果您持续收到这类的信件骚扰, 请您尽快联络管理员。\n" +"\n" +" 请使用以下验证码完成后续修改邮箱流程\n" + "\n " +code + "\n\n" +" 注意:请您收到邮件的十分钟内("+DateFormatUtils.format(new Date().getTime() + 10 * 60 * 1000, "yyyy-MM-dd HH:mm:ss")+")前使用,否则验证码将会失效。");mailUtil.sendSimpleMail(mail);}}

结果

企业邮箱示例

企业邮箱相对于个人邮箱要改两处地方

一:配置文件

#需要改一下smtp地址,我在这卡了半天没找到,太草了QwQ!!!spring.mail.host=smtp.spring.mail.username=xxxxx@#注意这里的密码可以填登录密码,不需要授权码,但如果你想用授权码登录,授权码获取参照第三条spring.mail.password=xxxxspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=truespring.mail.properties.mail.smtp.starttls.required=truespring.mail.default-encoding=UTF-8

二:用管理员账号授予邮箱对应权限

三:获取授权码

如果想用授权码登陆可以这样获取授权码

需要注意:现在很多服务器运营商都封25端口了!主要是防止垃圾邮件,不过一般是可以申请开启的

这是为了加强管理,因为如果大量垃圾邮件从你的平台出去,以后ip段都被人黑名单了,谁也别想发了,所以想阿里云等服务器运营商都封了25端口,所以我们项目部署到服务器的时候邮件要换成465端口发送

只需要在配置文件下加上SSL配置就好,建议在本地发送的时候也加上,更加安全

# SSL Configspring.mail.port=465spring.mail.protocol=smtpspring.mail.properties.mail.smtp.ssl.enable=truespring.mail.properties.mail.smtp.socketFactory.port=465spring.mail.properties.mail.smtp.socketFactory.class=.ssl.SSLSocketFactory

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。