`
zhanggepeng
  • 浏览: 3554 次
  • 性别: Icon_minigender_1
  • 来自: 吉林长春.
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用java写的群发邮件

阅读更多
相关文章: X
java 邮箱例子
利用JavaMail收/发Gmail邮件(SSL)

Gmail目前已经启用了POP3和SMTP服务,具体情况请看 http://www.javayou.com/showlog.jspe?log_id=490

与其他邮箱不同的是Gmail提供的POP3和SMTP是使用安全套接字层SSL的,因此常规的JavaMail程序是无法收发邮件的,下面是使用JavaMail如何收取Gmail邮件以及发送邮件的代码:

1. 邮件收取

package lius.javamail.ssl;

import java.io.UnsupportedEncodingException;
import java.security.*;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;

/**
* 用于收取Gmail邮件
* @author Winter Lau
*/
public class GmailFetch {

public static void main(String argv[]) throws Exception {

Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.pop3.socketFactory.fallback", "false");
props.setProperty("mail.pop3.port", "995");
props.setProperty("mail.pop3.socketFactory.port", "995");

//以下步骤跟一般的JavaMail操作相同
Session session = Session.getDefaultInstance(props,null);

//请将红色部分对应替换成你的邮箱帐号和密码
URLName urln = new URLName("pop3","pop.gmail.com",995,null,
"[邮箱帐号]", "[邮箱密码]");
Store store = session.getStore(urln);
Folder inbox = null;
try {
store.connect();
inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
FetchProfile profile = new FetchProfile();
profile.add(FetchProfile.Item.ENVELOPE);
Message[] messages = inbox.getMessages();
inbox.fetch(messages, profile);
System.out.println("收件箱的邮件数:" + messages.length);
for (int i = 0; i < messages.length; i++) {
//邮件发送者
String from = decodeText(messages[i].getFrom()[0].toString());
InternetAddress ia = new InternetAddress(from);
System.out.println("FROM:" + ia.getPersonal()+'('+ia.getAddress()+')');
//邮件标题
System.out.println("TITLE:" + messages[i].getSubject());
//邮件大小
System.out.println("SIZE:" + messages[i].getSize());
//邮件发送时间
System.out.println("DATE:" + messages[i].getSentDate());
}
} finally {
try {
inbox.close(false);
} catch (Exception e) {}
try {
store.close();
} catch (Exception e) {}
}
}

protected static String decodeText(String text)
throws UnsupportedEncodingException {
if (text == null)
return null;
if (text.startsWith("=?GB") || text.startsWith("=?gb"))
text = MimeUtility.decodeText(text);
else
text = new String(text.getBytes("ISO8859_1"));
return text;
}

}

2. 发送邮件

package lius.javamail.ssl;

import java.security.Security;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
* 使用Gmail发送邮件
* @author Winter Lau
*/
public class GmailSender {

public static void main(String[] args) throws AddressException, MessagingException {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
// Get a Properties object
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
final String username = "[邮箱帐号]";
final String password = "[邮箱密码]";
Session session = Session.getDefaultInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}});

// -- Create a new message --
Message msg = new MimeMessage(session);

// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(username + "@mo168.com"));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[收件人地址]",false));
msg.setSubject("Hello");
msg.setText("How are you");
msg.setSentDate(new Date());
Transport.send(msg);

System.out.println("Message sent.");
}
}
分享到:
评论
4 楼 eivenchan 2008-05-18  
自己做一个mail服务器也不难啊,
装个sendmail或qmail就行了。
3 楼 zhanggepeng 2008-01-14  
谢谢楼上的告诉
2 楼 liangguanhui 2007-12-20  
发布前请搞好你的排版,另外,去掉没用的注释,加上必要的注释
1 楼 zhanggepeng 2007-12-18  
不是很明确

相关推荐

    关于java的群发邮件

    在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、报告或者营销信息。本文将详细讲解如何利用Java技术进行邮件群发,同时也会涉及.NET框架的一些基本概念,以及数据库在其中的...

    java邮件群发代码

    【Java邮件群发代码详解】 ...`Mailer`类是一个基本的封装,通过它可以方便地构建和发送电子邮件,尤其适合群发邮件的场景。在实际开发中,可以根据需求进行扩展,例如添加附件、支持HTML格式的邮件正文等。

    JAVA实现邮件群发

    在Java编程环境中,实现邮件群发是一项常见的任务,特别是在企业级应用中,如发送通知、订阅更新或客户服务通信。这个“JAVA实现邮件群发”的示例程序提供了精炼且实用的解决方案,使得开发者能够轻松地集成邮件发送...

    java实现邮件群发

    5. **群发邮件**:在实际应用中,群发邮件可能涉及到大量收件人。为了避免将所有收件人显示在“抄送”或“密送”字段,可以创建多个 Message 对象,每个对象对应一组收件人,然后分别发送。也可以使用 Bcc(Blind ...

    基于java spring邮件群发的demo

    在群发邮件时,只需要遍历接收者列表,调用`JavaMailSender`的`send()`方法即可。 此外,项目中还提到了`jdbc.properties`文件,这表明系统可能使用了数据库来存储邮件接收者的信息或其他与邮件相关的数据。MySQL是...

    java 邮件群发

    在群发邮件时,只需循环遍历收件人列表,为每个收件人创建并发送一个Message对象。注意,如果邮件内容包含HTML,可以使用MimeBodyPart和Multipart类来构建复杂的邮件结构。 ```java Multipart multipart = new ...

    java发送邮件的案例 包括附件 群发

    通过上述步骤,你就可以在Java程序中实现发送带有附件的群发邮件功能了。不过,实际开发时还应注意错误处理和异常捕获,确保邮件发送过程的健壮性。同时,为了提高用户体验,可以考虑使用异步方式发送邮件,避免阻塞...

    java读取数据库群发邮件.zip

    本项目“java读取数据库群发邮件”是利用Java技术来实现从Access数据库中获取数据,并根据这些数据进行邮件群发的功能。Access是一款由Microsoft开发的关系型数据库管理系统,适合小型企业和个人用户存储和管理数据...

    javaemail邮件群发

    JavaMail邮件群发是Java编程中用于发送电子邮件的API,它允许开发者通过编程方式实现邮件的发送、接收和管理。这个技术广泛应用于自动化通知、营销推广、客户服务等场景。JavaMail API提供了丰富的功能,包括SMTP...

    [JAVA]-邮件群发程序

    邮件群发程序,由Java编写.程序由本人原创,如有问题可加我QQ(12356918)交流.

    Java编程实现邮件发送(含身份验证)

    在IT行业中,Java编程语言因其跨平台特性及丰富的库支持,常常被用于各种应用场景,包括网络通信和邮件处理。本教程将深入讲解如何利用Java实现邮件的发送,并包含身份验证的过程,这对于自动化任务、通知系统或者...

    java发送qq邮件 支持群发 附件等等

    5. **群发邮件**: 要实现群发功能,可以在调用send()方法时传入多个RecipientType(TO, CC, BCC)的InternetAddress对象,分别代表收件人、抄送人和密送人。注意,为了避免被邮件服务商标记为垃圾邮件,应合理控制...

    java 邮件 群发 源代码

    Java邮件群发是一种常见的编程需求,特别是在自动化通知、营销活动或者系统消息传递中。下面将详细解释这个主题,包括核心概念、技术要点以及如何在Java中实现邮件群发功能。 一、JavaMail API JavaMail API是Java...

    用java mail发邮件源码,支持多种邮局,支持单发和群发

    6. **群发邮件**:群发邮件只需要在`setRecipients`方法中传入多个收件人地址即可。对于多封不同的邮件,你需要为每个收件人创建并设置不同的`Message`对象。 在提供的`testMail`文件中,可能包含了测试邮件发送...

    javamail邮件群发、单发_邮件发送

    JavaMail 是一个强大的开源库,用于在 Java 应用程序中处理电子邮件的发送和接收。它提供了丰富的 API,使得开发者可以方便地实现邮件的发送、接收、管理等操作。在这个主题中,我们将深入探讨如何使用 JavaMail ...

    用java代码发邮件,真是牛啊,可群发,也可发附件

    对于群发邮件,只需在`setRecipients`方法中传入多个收件人的邮箱地址,用逗号分隔即可。为了提高效率,还可以使用`InternetAddress[]`数组传递收件人列表。 总结,通过JavaMail API,我们可以方便地在Java程序中...

    Java Mail群发实例、邮件群发相关、打造自己的EDM系统

    本教程将深入探讨如何使用Java Mail进行邮件群发,并讲解如何构建一个简单的EDM(Electronic Direct Marketing,电子直接营销)系统。 首先,你需要了解Java Mail的核心组件。`javax.mail`包提供了各种类和接口,...

    用jsp实现邮件群发

    本文将详述如何使用Java Server Pages(JSP)技术来实现邮件群发,并结合SQL Server 2000数据库来存储和管理邮件列表。 首先,我们需要理解JSP的基本原理。JSP是Java平台上的一个服务器端脚本语言,用于生成动态...

    java mail 邮件群发源码

    对于群发邮件,需要调用`InternetAddress`的`Address[]`类型的`setRecipients()`方法,传入收件人列表。 4. **发送邮件**:创建好`MimeMessage`后,使用`Transport`类的`send()`方法发送邮件。`Transport`也是从`...

    java Swing 邮件发送(群发)

    4. **群发邮件**: 群发邮件涉及到将同一封邮件发送给多个收件人。在JavaMail API中,可以创建一个收件人列表,并将它们添加到`InternetAddress`对象的集合中。然后,这些地址可以通过`Message`对象的`setRecipients...

Global site tag (gtag.js) - Google Analytics