java mail 发送邮件,并判断是否发送成功

本文介绍了JavaMail发送邮件的基本原理和步骤,包括设置服务器连接、验证账号信息、填充邮件内容。重点讨论了如何判断邮件发送是否成功,尤其是在网络状况影响下,如何处理发送失败的情况。提供的代码示例使用了163邮箱的SMTP协议,建议前端先进行邮箱格式检查,后台再做一次校验。

javamail 发邮件原理及步骤(仅是个人理解):

1.设置连接的服务器

2.验证账号密码是否正确,正确的话则获得权限

3.设置发送的内容

其实javamial只是给我们提供了链接到设置的某个邮箱的服务器上,具体的发邮件还是通过服务器发送的。下面是代码()

1.sendEmailUtil(连接邮箱服务器,验证权限,填充发送内容,我用的是163邮箱smtp协议,也可以使用其他的)

public class EmailUtil {
	//管理员向企业手动发发邮件
	public boolean sentEmail(String to,String title,String content){
		String from ="发件人邮箱";
		String password="客户端授权码";
		boolean falg =false;
               Properties properties =new Properties();
		properties.put("mail.smtp.host", "smtp.163.com");
                properties.put("mail.smtp.port", "25");
                properties.put("mail.smtp.auth", "true");
        try {
        	 Authenticator authenticator = new Email_Authenticator(from, password);
             javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticator);
             MimeMessage mailMessage = new MimeMessage(sendMailSession);
			mailMessage.setFrom(new InternetAddress(from));
			 mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
		        mailMessage.setSubject(title, "UTF-8");
		        mailMessage.setSentDate(new Date());
		        //邮件内容
		        Multipart mainPart = new MimeMultipart();
		        BodyPart html = new MimeBodyPart();
		        html.setContent(content, "text/html; charset=utf-8");
		        mainPart.addBodyPart(html);
		        mailMessage.setContent(mainPart);
		        Transport.send(mailMessage);
		        falg=true;
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
       
        
        return falg;
	}
	
2.后台调用

//管理员向用户发邮件(我是在ssh框架下写的)
	public String sendEmail() throws AddressException, MessagingException{
		//Email email =emailService.sendEmail(t_from);
		e_msg="false";
		EmailUtil emailUtil =new EmailUtil();
		if(emailUtil.sentEmail(to, title, content)){
			e_msg="true";
		}
		return "success";
	}
3.jsp页面

   //发邮件
      function sendEmail(){
      	alert("发邮件");
      	var to =$("#to").val();
      	var title=$("#title").val();
      	var content=$("textarea").val();
      	$.post("data/sendEmail",
      		{
      			"to":to,
      			"title":title,
      			"content":content
      		},function(json){
      			if(json.e_msg =="true"){
      				layer.msg('发送成功', {icon: 1});
      				<!--再次在发一次post,将发送的邮件的信息保存在数据库,并将是否发送成功字段设为Y -->
      			}else{
      				layer.msg('发送失败', {icon: 2});
      				<!--再次在发一次post,将发送的邮件的信息保存在数据库,并将是否发送成功字段设为N-->
      			}
      		},"json");
      	
4.效果展示

5.我这这个发送成功失败是在有网路和没网络的情况下产生的,所以我需要获得发送失败的提醒方便我再将数据进行保存,如果发送失败直接将此条邮件设在草稿箱或发送失败中,至于邮箱格式等发在前段判断,提交到后台在判断一下,不用再util中判断。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值