首先我们需要两个jar包,点击下面即可下载这两个包:
我们这里采用QQ邮箱发送邮件为例,代码如下:
package ddd; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import com.sun.mail.util.MailSSLSocketFactory; public class SendEmail { public static void main(String[] args) { try { //设置发件人 String from = "xxx@qq.com"; //设置收件人 String to = "xxxx@qq.com"; //设置邮件发送的服务器,这里为QQ邮件服务器 String host = "smtp.qq.com"; //获取系统属性 Properties properties = System.getProperties(); //SSL加密 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); properties.put("mail.smtp.ssl.enable", "true"); properties.put("mail.smtp.ssl.socketFactory", sf); //设置系统属性 properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.auth", "true"); //获取发送邮件会话、获取第三方登录授权码 Session session = Session.getDefaultInstance(properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(from, "第三方登录授权码"); } }); Message message = new MimeMessage(session); //防止邮件被当然垃圾邮件处理,披上Outlook的马甲 message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869"); message.setFrom(new InternetAddress(from)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); //邮件标题 message.setSubject("This is the subject line!"); BodyPart bodyPart = new MimeBodyPart(); bodyPart.setText("我发送了文件给你"); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(bodyPart); //附件 bodyPart = new MimeBodyPart(); String fileName = "文件路径"; DataSource dataSource = new FileDataSource(fileName); bodyPart.setDataHandler(new DataHandler(dataSource)); bodyPart.setFileName("文件显示的名称"); multipart.addBodyPart(bodyPart); message.setContent(multipart); Transport.send(message); System.out.println("mail transports successfully"); } catch (Exception e) { e.printStackTrace(); } } }
QQ邮箱发送邮件记得要在设置里面开启POP3/SMTP服务,然后获取第三方登录的授权码。
上面的代码中启用了SSL加密,网上很多人说QQ发送邮件不加上SSL加密会报错,楼主这里不加也是可以发送的不知道为什么,但是为了数据安全还是加上了。
有些人发送的邮件会被当做垃圾邮件处理,这里我也进行了处理,给邮件头披上Outlook的马甲,当然也可以将邮件内容以HTML格式发送,以防止被当成垃圾邮件。
上述就是一个简单的java发送QQ带附件的邮件的代码。