JAVA邮件发送

邮件发送接口

  1. 定时发送邮件
  2. 邮件报警
  3. 程序运行成功/失败通知
  4. 统计报表发送

输入参数说明 :

参数类型说明例子
titleString邮件标题邮件测试
contentString邮件内容该邮件由代码自动发送
emailsList《String》邮件接收者address@email.com
> 接收者定义为List意味着可以同时发给多人

代码参数说明 :
| 参数 | 说明 | 例子 |
| :-------- | -------- |
| setHostName | 发送方所在邮件服务器 | 可以在邮箱设置➡️客户端设置找到
例如腾讯企业邮箱是:smtp.exmail.qq.com
阿里云邮箱是:smtp.aliyun.com |
| DefaultAuthenticator |认证用的,分别是用户名和密码|user: address@email.com pasword:xxxxxx|
| setFrom |发送方的邮箱地址| address@email.com |
> 发送方所在邮件服务器的hostName可以在设置中找到,端口一般默认为465
*代码中写的中文等等需要自己去修改

#####HostName及端口 如下图所示
这里写图片描述

代码块

代码类如下:

public class EmailUtil {
	public static void sendEmain(String title, String content, List<String> emails) {
		int cnt = 10;
		while (true && cnt > 0) {
			cnt --;
			try {
				Email emailS = new SimpleEmail();
				emailS.setHostName("smtp.aliyun.com");
				emailS.setSmtpPort(465);
				emailS.setAuthenticator(new DefaultAuthenticator("发送方", "发送方登录密码"));
				emailS.setSSLOnConnect(true);
				emailS.setFrom("发送方");
				emailS.setSubject(title);
				//emailS.setMsg(content);
				emailS.setCharset("UTF-8");
				emailS.setContent(content, EmailConstants.TEXT_HTML);
				for (String e : emails) {
					emailS.addTo(e);
				}
				emailS.send();
				break;
			} catch (Exception e) {
				if (cnt==1) {
					sendEmain2(title, content+"<br>*发送方异常,xxx代发", emails);
				}
				
				TimeUtil.sleep(5000L);
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 上边那个可能坏掉,
	 */
	public static void sendEmain2(String title, String content, List<String> emails) {
		int cnt = 10;
		while (true && cnt > 0) {
			cnt --;
			try {
				Email emailS = new SimpleEmail();
				emailS.setHostName("smtp.exmail.qq.com");
				emailS.setSmtpPort(465);
				emailS.setAuthenticator(new DefaultAuthenticator("代发者邮箱", "代发者登录密码"));
				emailS.setSSLOnConnect(true);
				emailS.setFrom("代发者邮箱");
				emailS.setSubject(title);
				//emailS.setMsg(content);
				emailS.setCharset("UTF-8");
				emailS.setContent(content, EmailConstants.TEXT_HTML);
				for (String e : emails) {
					emailS.addTo(e);
				}
				emailS.send();
				break;
			} catch (Exception e) {
				TimeUtil.sleep(5000L);
				e.printStackTrace();
			}
		}
	}
//将内容拼接成表格发送到邮件,一般用于发送统计报表或表格相关内容
public static String getTableHtml(List<String []> m) {
		StringBuilder sb = new StringBuilder();
		sb.append("<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" style=\"border:solid #eee\">");
		for(String [] a: m) {
			sb.append("<tr>");
			for(String cell: a) {
				sb.append("<td style=\"padding:5px;\">");
				sb.append(cell);
				sb.append("</td>");
			}
			sb.append("</tr>");
		}
		sb.append("</table>");
		return sb.toString();
	}

**注意:**如果邮件报警或某些应用发送邮件太频繁,会导致发送失败,故这里循环10次,有一次发送成功即break,太过异常的即便循环10次也会失败,所以这里做了一个邮件发送的备份sendEmain2()方法。

###使用方法:

//把统计结果直接发送到邮件
		List<String> emails = new ArrayList<String>();
		List<String[]> list = new ArrayList<String[]>();//邮件内容
		//列名自己写,一般都是固定的
		list.add(new String[]{"计数器名","计数器值"});
		String title = "邮件标题";  //jobName也可以
		emails.add("address@email.com");
		if (job.waitForCompletion(true)) {
			Counters counters = job.getCounters();
			CounterGroup gc = counters.getGroup( COUNTER_NAME );
			for (Counter counter : gc) {
				list.add(new String[]{counter.getName(),  counter.getValue()+"" });
				System.out.println(counter.getName() + "\t" + counter.getValue()+"");
			}
			emails.add("xxx@email.com");
			EmailUtil.sendEmain(title+"Success", EmailUtil.getTableHtml(list), emails);
		} else {
			EmailUtil.sendEmain(title+"Failed", EmailUtil.getTableHtml(list), emails);
		} 

**注意:**这里贴的是一个mapreduce运行结果的判断,运行成功将统计结果邮件发送给别人及自己,如果运行失败,则只发错误报警给自己。

	<!--maven工程需要引入如下依赖包-->
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-email</artifactId>
		<version>1.4</version>
	</dependency>

版权所有 © Copyright AdMaster address@email.com


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java邮件发送工具是JavaMail API。可以使用JavaMail API来发送文本邮件、HTML邮件、带附件的邮件等。 在Java中,可以使用MimeMessage类和MimeMessageHelper类来创建并发送邮件。首先,需要添加依赖项javax.mail到项目的pom.xml文件中: ``` <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency> ``` 然后,可以使用以下代码来创建和发送邮件: ```java import javax.mail.*; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMessageHelper; public class EmailSender { public static void sendEmail(String to, String subject, String content, String from) { // 创建Session对象 Session session = Session.getDefaultInstance(new Properties()); try { // 创建MimeMessage对象 MimeMessage message = new MimeMessage(session); // 设置发件人 message.setFrom(new InternetAddress(from)); // 设置收件人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置主题 message.setSubject(subject); // 设置内容 message.setContent(content, "text/html"); // 发送邮件 Transport.send(message); System.out.println("邮件发送成功"); } catch (MessagingException e) { System.err.println("邮件发送失败"); } } } ``` 以上是一个简单的Java邮件发送工具类的示例。使用该工具类可以发送包含HTML代码的邮件。你可以调用`sendEmail`方法来发送邮件,其中`to`参数是收件人的邮箱地址,`subject`参数是邮件的主题,`content`参数是邮件的内容,`from`参数是发件人的邮箱地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值