Java 发送多人邮件(非线程)

Java 发送多人邮件(非线程), 不带附件

/**
	 * 非线程发送邮件
	 * 
	 * @param tto
	 * @param ttitle
	 * @param tcontent
	 * @param sourceMail
	 * @param smtp
	 * @param username
	 * @param password
	 */
	public Boolean send(String tto, String ttitle, String tcontent, String sourceMail, String smtp,
			final String username, final String password,String sendUser) {
		try {
			Properties props = new Properties(); // 也可用Properties props =
			// System.getProperties();
			props.put("mail.smtp.host", smtp); // 存储发送邮件服务器的信息
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.smtp.auth", "true"); // 同时通过验证
			Session session = Session.getInstance(props); // 根据属性新建一个邮件会话
			session.setDebug(true);
			MimeMessage message = new MimeMessage(session); // 由邮件会话新建一个消息对象

			// 设置邮件
			InternetAddress from = new InternetAddress(sourceMail);
			message.setFrom(from); // 设置发件人
			/**
			 * 发送多人用分号隔开(";")
			 */
			String[] toarry = tto.split(";");
			InternetAddress[] address = new InternetAddress[toarry.length];
			for (int i = 0; i < toarry.length; i++) {
				if (!("".equals(toarry[i].trim()))) {
					address[i] = new InternetAddress(toarry[i]);
				}
			}

			// InternetAddress to = new InternetAddress(tto);
			message.setRecipients(Message.RecipientType.TO, address); // 设置收件人,并设置其接收类型为TO
			message.setSubject(ttitle); // 设置主题
			message.setSentDate(new Date()); // 设置发信时间

			/**
			 * Multipart邮件
			 */
			Multipart mp = new MimeMultipart();
			MimeBodyPart mbp = new MimeBodyPart();
			mbp.setContent(tcontent, "text/html;charset=utf-8");// 设置普通内容
			mp.addBodyPart(mbp);
			
			
			Transport transport = session.getTransport("smtp");
			transport.connect(smtp, username, password); // 以smtp方式登录邮箱
			transport.sendMessage(message, message.getAllRecipients()); // 发送邮件,其中第二个参数是所有
			// 已设好的收件人地址
			transport.close();

			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 以下是一个简单的 Java线程发送邮件的示例代码: ```java import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class SendEmail implements Runnable { private String to; private String subject; private String body; private String from; private String password; public SendEmail(String to, String subject, String body, String from, String password) { this.to = to; this.subject = subject; this.body = body; this.from = from; this.password = password; } public void run() { String host = "smtp.gmail.com"; Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.port", "587"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(from, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(body); Transport.send(message); System.out.println("Sent email to " + to); } catch (MessagingException e) { throw new RuntimeException(e); } } public static void main(String[] args) { String from = "your.email@gmail.com"; String password = "your.password"; String to1 = "recipient1@example.com"; String to2 = "recipient2@example.com"; String subject = "Testing"; String body = "This is a test email."; Thread t1 = new Thread(new SendEmail(to1, subject, body, from, password)); Thread t2 = new Thread(new SendEmail(to2, subject, body, from, password)); t1.start(); t2.start(); } } ``` 该示例使用 JavaMail API 和 Gmail SMTP 服务器来发送电子邮件。您需要将 `from` 和 `password` 变量设置为您自己的电子邮件地址和密码,并将 `to1` 和 `to2` 变量设置为您想要发送邮件的收件人地址。在 `main` 方法中,我们创建了两个线程发送邮件,每个线程负责向一个收件人发送邮件。 ### 回答2: Java线程发送邮件的实现可以通过使用Java Mail API来完成。 首先,需要导入Java Mail API相关的jar包,比如javax.mail.jar和javax.mail-api.jar。 然后,创建一个实现了Runnable接口的线程类,例如SendEmailRunnable。在run方法中,可以编写发送邮件的逻辑。可以使用Java Mail提供的API来建立邮件会话、创建邮件消息、设置收件人、主题、正文等信息,并最终发送。 在主线程中,可以创建多个SendEmailRunnable对象,并使用Thread类来启动这些线程。这样可以同时发送多封邮件,提高发送效率。 下面是一个简单示例: import java.util.Properties; import javax.mail.*; import javax.mail.internet.*; public class SendEmailRunnable implements Runnable { private String toEmail; private String subject; private String content; public SendEmailRunnable(String toEmail, String subject, String content) { this.toEmail = toEmail; this.subject = subject; this.content = content; } @Override public void run() { // 设置SMTP服务器 Properties props = new Properties(); props.setProperty("mail.smtp.host", "smtp.example.com"); props.setProperty("mail.smtp.auth", "true"); // 创建邮件会话 Session session = Session.getDefaultInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("username", "password"); } }); try { // 创建邮件消息 MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("from@example.com")); message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); message.setSubject(subject); message.setText(content); // 发送邮件 Transport.send(message); System.out.println("邮件发送成功!"); } catch (Exception e) { e.printStackTrace(); } } } 然后,可以在主线程中创建多个SendEmailRunnable对象,并使用Thread类来启动这些线程,例如: public class Main { public static void main(String[] args) { SendEmailRunnable email1 = new SendEmailRunnable("email1@example.com", "主题1", "内容1"); SendEmailRunnable email2 = new SendEmailRunnable("email2@example.com", "主题2", "内容2"); new Thread(email1).start(); new Thread(email2).start(); } } 通过多线程发送邮件可以同时处理多个邮件发送请求,提高发送效率和响应速度。但需要注意邮件服务器的性能和限制,避免过多的邮件发送导致服务器拒绝服务或被视为垃圾邮件
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值