1.网上方法要导入两个包
mail.jar&activation.jar
package com.zjh.shopping.util; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class JavaMailSendUtil { public void sendmail(String subject, String from, String[] to, String text, String[] filenames, String mimeType) { try { Properties props = new Properties(); String smtp = "smtp.163.com"; // 设置发送邮件所用到的smtp String servername = "*******"; //邮箱账号名 String serverpaswd = "******"; //邮箱密码 javax.mail.Session mailSession = null; // 邮件会话对象 javax.mail.internet.MimeMessage mimeMsg = null; // MIME 邮件对象 props = java.lang.System.getProperties(); // 获得系统属性对象 props.put("mail.smtp.host", smtp); // 设置SMTP主机 props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证 // 到服务器验证发送的用户名和密码是否正确 SmtpAuthenticator myEmailAuther = new SmtpAuthenticator(servername, serverpaswd); // 设置邮件会话 注意这里将认证信息放进了Session的创建参数里 mailSession = javax.mail.Session.getInstance(props, (Authenticator) myEmailAuther); // 设置传输协议 javax.mail.Transport transport = mailSession.getTransport("smtp"); // 设置from、to等信息 mimeMsg = new javax.mail.internet.MimeMessage(mailSession); if (null != from && !"".equals(from)) { InternetAddress sentFrom = new InternetAddress(from); mimeMsg.setFrom(sentFrom); // 设置发送人地址 } InternetAddress[] sendTo = new InternetAddress[to.length]; for (int i = 0; i < to.length; i++) { System.out.println("发送到:" + to[i]); sendTo[i] = new InternetAddress(to[i]); } mimeMsg.setRecipients( javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); mimeMsg.setSubject(subject, "gb2312"); MimeBodyPart messageBodyPart1 = new MimeBodyPart(); // messageBodyPart.setText(UnicodeToChinese(text)); messageBodyPart1.setContent(text, mimeType); // 附件传输格式 Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart1); for (int i = 0; i < filenames.length; i++) { MimeBodyPart messageBodyPart2 = new MimeBodyPart(); String filename = filenames[i].split(";")[0]; String displayname = filenames[i].split(";")[1]; // 得到数据源 FileDataSource fds = new FileDataSource(filename); // BodyPart添加附件本身 messageBodyPart2.setDataHandler(new DataHandler(fds)); // BodyPart添加附件文件名 messageBodyPart2.setFileName(MimeUtility .encodeText(displayname)); multipart.addBodyPart(messageBodyPart2); } mimeMsg.setContent(multipart); // 设置信件头的发送日期 mimeMsg.setSentDate(new Date()); mimeMsg.saveChanges(); // 发送邮件 transport.send(mimeMsg); transport.close(); System.out.println("发送到成功!!!"); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { String title = "测试邮件";// 所发送邮件的标题 String from = "************@163.com";// 从那里发送 String sendTo[] = { "********@qq.com" };// 发送到那里 // 邮件的文本内容,可以包含html标记则显示为html页面 String content = "test java send mail !!!!!!<br><a href="http://sjsky.javaeye.com/">My blog</a>"; // 所包含的附件,及附件的重新命名 String fileNames[] = { "d:\\test.jpg;test.jpg" }; JavaMailSendUtil test = new JavaMailSendUtil(); try { // MailSender mailsender = new MailSender(); test.sendmail(title, from, sendTo, content, fileNames, "text/html;charset=gb2312"); } catch (Exception ex) { ex.printStackTrace(); } } class SmtpAuthenticator extends Authenticator { String username = null; String password = null; public SmtpAuthenticator(String username, String password) { super(); this.username = username; this.password = password; } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(this.username, this.password); } } }
2.自己用的
package com.gree.mail.mailsend; import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.naming.InitialContext; import javax.naming.NamingException; import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; public class Mailsend2 { public static Session getSession() { Session session = null; // session = (Session)new InitialContext().lookup("MailSession"); Properties props = new Properties(); props.put("mail.smtp.host", "10.1.1.168"); props.put("mail.smtp.auth", "false"); session = Session.getDefaultInstance(props, null); return session; } public static void sendMessage(String from, String[] to, String[] cc, String subject, String content, String mimeType) throws javax.mail.MessagingException { Message message = new MimeMessage(getSession()); if (!StringUtils.isEmpty(from)) { InternetAddress sentFrom = new InternetAddress(from); message.setFrom(sentFrom); } InternetAddress[] sendTo = new InternetAddress[to.length]; for (int i = 0; i < to.length; i++) { sendTo[i] = new InternetAddress(to[i]+"@gree.com.cn"); } if ( (cc.length > 0) && (cc[0] != null)) { InternetAddress[] copyTo = new InternetAddress[cc.length]; for (int i = 0; i < cc.length; i++) { copyTo[i] = new InternetAddress(cc[i]+"@gree.com.cn"); } message.setRecipients(Message.RecipientType.CC, copyTo); } message.setRecipients(Message.RecipientType.TO, sendTo); //System.out.println("发送人员:"+message.getRecipients(Message.RecipientType.TO)); //System.out.println("抄送人员:"+message.getRecipients(Message.RecipientType.CC)) message.setSubject(subject); message.setContent(content, mimeType); Transport.send(message); } public void sendHTMLMessage(String[] to, String[] cc, String title, String content)throws MessagingException { try { sendMessage("SCBWEB", to, cc, title+"-模具管理系统信息", content, "text/html;Charset=gb2312"); } catch (javax.mail.MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } // System.out.println("2="+content); } public static void main(String[] args) { String [] to= new String[] {"180172"}; String [] cc= new String[] {"180158"}; String title="ceshi"; String content="晚上小天请我们吃烤鱼,8号门对面,大概67点左右,等下下班别走开"; try { Mailsend2.sendMessage("[email protected]", to, cc, title, content, "text/html;Charset=utf-8"); } catch (javax.mail.MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
myeclipse中发送邮件出现Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
出现这个问题的原因是jar包版本不统一,解决方法如下:
我在项目导入了jar包
与myeclipse自带jar冲突了
删除Java EE 5 Libraries/javaee.jar/mail里的包有东西.
具体操作:
进入myeclipse的安装目录:我安装的是myeclipse blue 8.5 具体路径如下
E:\development_tools\myeclipse_8.5\install_d\common\plugins\com.genuitec.eclipse.j2eedt.core_8.5.0.me201003231033\data\libraryset\EE_5
找到javaee.jar,打开后删除mail文件夹即可(需要先关闭运行着的myeclipse,否则无法删除)
时间: 2024-11-09 00:42:48