`
lpvv55_
  • 浏览: 842 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

javamail 给多人发送邮件(转)

    博客分类:
  • java
阅读更多
之前测试mail这个功能的时候,简单的作出了发送email的功能,但是仅仅发给一个人可以,发送多个联系人就会出错,

发送失败!请与邮件管理员联系。 javax.mail.internet.AddressException: Illegal whitespace in address in string ``shuting.wang@earlylight.com.hk,wst5921 @163.com'

然后,我开始上网搜别人的实例,终于找到3篇比较全面的解释,开心!

通篇阅读学到了不少,在javamail基础篇中有这样一段话

(4). InternetAddress:javax.mail.internet.InternetAddress。它继承自抽象类javax.mail.Address。InternetAddress类。用于表示邮件发送地址的类,其构造方法需要传递一个字符串类型的参数,如果是单个邮件地址,只需将邮件地址作为字符串参数传递即可,如果是群发邮件,则将所有的邮件地址拼接成一个字符串,中间有逗号“,”分隔即可。

我也是这样做的,多个邮件之间使用逗号链接,为什么就不行呢?
后来思考了很久很久,和同学探讨--终于找到解决方案!

1 : 使用split()函数将多个邮件链接字符串以“,”分割

2:使用List存储,(发送一封邮件的时候使用String类型,但是群发是不可以滴^_^)

具体代码如下:



----------------------------------------------sendMail.jsp-------------------------------------------------------------------------------

<%@ page contentType="text/html;charset=utf-8" %>
<!--中文处理代码-->
<!--导入要用到的类库-->
<%@ page import="java.util.*"%>
<%@ page import="javax.mail.*"%>
<%@ page import="javax.mail.internet.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>send-email发送邮件</title>
</head>
<body>
<%
try{
//从html表单中获取邮件信息
String tfrom=request.getParameter("from");
String tto=request.getParameter("to"); 
String ttitle=request.getParameter("title");
String tcontent=request.getParameter("content");
//JavaMail 需要properties来创建一个session对象,它将寻找字符串mail stmp host 属性值就是发送邮件的主机.
//properties对象获取诸如邮件服务器、用户名、密码等信息,以及其他可在整个应用程序中共享的信息

Properties props=new Properties();//也可用Properties props = System.getProperties();
props.put("mail.smtp.host","  输入服务器地址");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证

Session s=Session.getInstance(props,null);//根据属性新建一个邮件会话,null参数是一种Authenticator(验证程序) 对象
s.setDebug(true);//设置调试标志,要查看经过邮件服务器邮件命令,可以用该方法

Message message=new MimeMessage(s);//由邮件会话新建一个消息对象

Address from=new InternetAddress(tfrom);//发件人的邮件地址
message.setFrom(from);//设置发件人
这里是关键
List list = new ArrayList();//不能使用string类型的类型,这样只能发送一个收件人
String []median=tto.split(",");//对输入的多个邮件进行逗号分割
for(int i=0;i<median.length;i++){
     list.add(new InternetAddress(median[i]));
}
InternetAddress[] address =(InternetAddress[])list.toArray(new InternetAddress[list.size()]);

message.setRecipients(Message.RecipientType.TO,address);//当邮件有多个收件人时,用逗号隔开

/*

发送一封也很简单啦是这样的

InternetAddress to =new InternetAddress(tto)//收件人的邮件地址tto是从页面中获取的参数

message。setRecipient(Message.RecipientType.To ,to)//设置收件人,并设置其收件类型为To



*/


message.setSubject(ttitle);//设置主题
message.setText(tcontent);//设置信件内容
message.setSentDate(new Date());//设置发信时间


message.saveChanges();//存储邮件信息


// Transport 是用来发送信息的,
// 用于邮件的收发打操作。
Transport transport=s.getTransport("smtp");
transport.connect("10.1.101.248","","");//以smtp方式登录邮箱 若没有设置用户名和密码 以""代替
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();
%>

<div align="center">
<p><font color="#FF6600"> 发送成功!邮件已保存到<%=address %>邮箱里面</font></p>
<p><a href="mail.html">再发一封 </a> 页面跳转中。。。。
</p>
</div>
<%
for(int i=0;i<5;i++){
%>
<%=i %>
<%
i++;

}
//response.sendRedirect
}catch(MessagingException e){
out.print("发送失败!请与邮件管理员联系。 ");
out.println(e.toString());

}
%>
</body>
</html>

原文:http://blog.csdn.net/shutingwang/article/details/6583689
分享到:
评论

相关推荐

    java实现给多人发送邮件多个附件

    总结,Java实现给多人发送邮件并附带多个附件,需要掌握JavaMail API的使用,包括配置SMTP服务器信息、创建Session、构建Message、添加附件以及发送邮件。在编写代码时,需要注意字符编码和错误处理,以保证邮件的...

    JavaMail(2)——给多人发送、抄送.docx

    "JavaMail多人发送电子邮件" JavaMail是一种常用的Java邮件处理库,通过使用JavaMail,可以轻松地发送电子邮件。在实际应用中,经常需要发送电子邮件给多个收件人,本文将介绍如何使用JavaMail实现给多人发送电子...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    在提供的 `javaMailDemo` 示例代码中,你可以找到上述步骤的完整实现,通过阅读和理解这段代码,你应该能更好地掌握 JavaMail 发送邮件的技巧。记得在实际操作时,遵循最佳实践,比如不要在代码中硬编码敏感信息(如...

    email附件发送、多人发送、抄送

    其次,多人发送邮件意味着一个邮件可以同时发给多个收件人。在邮件头部的"To"字段中,可以输入多个收件人的电子邮件地址,用逗号分隔。JavaMail API的`MimeMessage`类提供了`setRecipients()`方法,可以接受一个`...

    javamail实现邮件发送(支持多接收人、多附件)

    最后,使用 `Transport` 类的 `send()` 方法发送邮件: ```java Transport.send(message); ``` 以上就是使用 JavaMail 1.4 实现邮件发送的完整过程,支持多接收人、抄送人以及添加多个附件。注意,为了防止密码...

    JavaMail发送和接受邮件的一个小例子

    首先,发送邮件的核心类是`javax.mail.Session`和`javax.mail.Transport`。`Session`类是所有邮件操作的基础,它负责配置邮件服务器的连接参数,如SMTP服务器地址、端口号、用户名和密码。`Transport`类则负责将准备...

    JAVAMAIL(邮件发送)

    演示如何使用javamail包发送电子邮件,这个实例支持多人接收邮件且可发送多附件(附件名可以为中文)

    java 发送多人邮件+多附件工具类

    发送邮件可能会遇到各种问题,如网络故障、认证失败等,因此在编写工具类时,应妥善处理可能出现的异常,如`MessagingException`、`IOException`等。 总之,这个"发送多人邮件+多附件工具类"利用JavaMail API实现...

    Java发送邮件给多人

    下面是一段使用JavaMail API发送邮件给多个人的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class MultiRecipientEmailSender { public static void ...

    javamail自动发送邮件【多人多抄送多附件正文含表单正文嵌入图片】

    这是我项目中自用的javamail,可通过定时任务自动发送邮件,可以发送多人,抄送多人(但没有测试过发送人的数量上限),可以带附件,邮件正文有一个表单,表单下面还嵌入了一张饼图的png图片,满足了一般的发送邮件...

    Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip

    这个"Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip"的资源包含两个核心类:EmailManager.java和AnnexMailService.java,它们提供了一个强大的邮件发送功能,支持单个或多个附件,以及添加抄送人。下面将详细...

    jsp或servlet发送邮件源码分享

    本文将详细讲解如何使用JSP和Servlet实现邮件发送功能,特别是多人发送邮件的源码分析。 首先,`SendMail.java`文件是实现邮件发送的核心类。在Java中,我们可以利用JavaMail API来处理邮件发送。JavaMail API提供...

    如何用java实现邮件方式每天发送消息

    在Java编程环境中,使用Spring Boot框架来实现每天定时发送邮件是一项常见的需求。Spring Boot以其便捷的配置和强大的功能,使得创建此类应用变得简单。本文将详细介绍如何利用Spring Boot结合Spring Task(Spring的...

    基于SMTP的JAVA邮件发送基于websocket和java的多人聊天室编程资料程序编程资料

    在Java中,发送邮件通常可以通过JavaMail API来实现。JavaMail API提供了一套丰富的API,使得开发者能够轻松地通过SMTP服务器发送邮件。 #### JavaMail API介绍 JavaMail API是由Sun Microsystems提供的一个标准...

    java发送邮件源代码带附件可抄送

    在Java编程语言中,发送邮件是一项常见的任务,尤其在企业级应用中,如通知系统、自动报警服务等。本文将详细讲解如何使用Java发送带有附件并可以抄送多人的电子邮件。 首先,JavaMail API是Java中用于处理邮件的...

    spring邮件服务(java邮件发送)

    例如,我们可以使用`send()`方法来发送邮件,它接受`SimpleMailMessage`对象作为参数,这个对象包含了邮件的基本信息,如收件人、主题和正文。 其次,`springmail_config.xml`是Spring的配置文件,它定义了邮件服务...

    java 发送email 邮件

    接下来,我们需要了解SMTP(简单邮件传输协议),这是JavaMail API用于发送邮件的主要协议。你需要知道SMTP服务器地址、端口号、用户名和密码来配置邮件会话。 以下是一个基础的Java发送邮件的示例: ```java ...

    java实现email发送

    以上就是使用JavaMail API发送邮件的基本流程。需要注意的是,实际应用中可能需要处理更多细节,如错误处理、附件添加、使用SSL/TLS加密等。此外,一些邮件服务提供商可能会要求使用特定的端口或进行额外的身份验证...

    Java 邮件发送

    首先,要发送邮件,我们需要引入JavaMail的相关库。主要依赖有两个:javax.mail-api和javamail-transport,它们可以通过Maven或Gradle等构建工具添加到项目中。 下面是一份基本的Java邮件发送的步骤和关键知识点: ...

    家庭多人同步记账本

    JavaMail API是一个用于处理邮件的开源库,它可以发送和接收电子邮件。在本项目中,它被用来自动化同步过程,当某一个家庭成员添加新的记账条目后,系统会通过邮件将更新发送到其他成员的手机或邮箱,这样所有成员都...

Global site tag (gtag.js) - Google Analytics