Java快捷实现邮箱发送

简单的发送邮件功能,下次可以直接使用。

首先是依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.4</version>
</dependency>

下面是邮件实体类。

import java.io.Serializable;

/**
 * Mail属性实体
 */
@SuppressWarnings("serial")
public class Mail implements Serializable {

   public static final String ENCODEING = "UTF-8";

   private String host; // 服务器地址

   private String sender; // 发件人的邮箱

   private String receiver; // 收件人的邮箱

   private String name; // 发件人昵称

   private String username; // 账号

   private String password; // 密码

   private String subject; // 主题

   private String message; // 信息(支持HTML)

  ......省略get,set
}

在然后就是工具类

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.log4j.Logger;



/**
 * 邮件发送工具实现类
 */
public class MailUtil {

   protected final Logger logger = Logger.getLogger(getClass());

   private boolean send(Mail mail) {
      // 发送email
      HtmlEmail email = new HtmlEmail();
      try {
         // 这里是SMTP发送服务器的名字:163的如下:"smtp.163.com"
         email.setHostName(mail.getHost());
         // 字符编码集的设置
         email.setCharset(Mail.ENCODEING);
         // 收件人的邮箱
         email.addTo(mail.getReceiver());
         // 发送人的邮箱
         email.setFrom(mail.getSender(), mail.getName());
         // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
         email.setAuthentication(mail.getUsername(), mail.getPassword());
         // 要发送的邮件主题
         email.setSubject(mail.getSubject());
         // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
         email.setMsg(mail.getMessage());
         email.send();
         if (logger.isDebugEnabled()) {
            logger.debug(mail.getSender() + " 发送邮件到 " + mail.getReceiver());
         }
         return true;
      } catch (EmailException e) {
         logger.error(mail.getSender() + " 发送邮件到 " + mail.getReceiver()
               + " 失败",e);
         return false;
      }
   }

   public boolean sendDirectly(String receiver,String subject,String content){
      Mail mail = new Mail();
      mail.setHost("smtp.dm.aliyun.com"); // 设置邮件服务器,如果不用163的,自己找找看相关的
      mail.setSender("省略");//发件人邮箱
      mail.setReceiver(receiver); // 接收人
      mail.setUsername("省略"); // 邮箱账号
      mail.setPassword("省略"); // 邮箱登录密码
      mail.setSubject(subject);//主题
      mail.setMessage(content);//内容
      return send(mail);
   }
   
   /**
    * Description: 校验邮箱是否合法
    * @param email 邮箱
    * @return 是否合法
    */
   public static boolean validateEmail(String email){
      String check = "^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
      Pattern pattern = Pattern.compile(check);
      Matcher matcher = pattern.matcher(email);
      boolean flag = matcher.matches();
      return flag;
   }

   public static void main(String[] args) {
      new MailUtil().sendDirectly("6248493@qq.com","test","test");
      System.out.println();
   }

}

这样直接就OK了。可以拿去直接使用。包名没有粘贴,这个直接加上就好。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com.email.send; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Message; 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; public class EmailSender { String protocol ="smtp"; //服务器 String from="*******@qq.com";//寄信人,这里可以改为你的邮箱地址 String to="*******@qq.com";//收信人,改为你要寄给那人的邮箱地址 建议可以用自己的QQ邮箱试试 String subject="Java发送邮件测试!";//邮件主题 String body="<a href=http://www.qq.com>qq.com" + "</a><br><img src=\"cid:8.jpg\">";//邮件内容 这是一个HTTP网页类的邮件内容 public static void main(String []args)throws Exception{ String server ="smtp.qq.com";//QQ邮箱的服务器,例如新浪邮箱或者其他服务器可以自己去查,这里用QQ邮箱为例 String user="******@qq.com";//登录邮箱的用户,不如说你用QQ邮箱,那就写你登录QQ邮箱的帐号 String pass="*******";//登录密码 EmailSender sender=new EmailSender(); Session session= sender.createSession(); MimeMessage message=sender.createMessage(session); System.out.println("正在发送邮件..."); Transport transport=session.getTransport(); transport.connect(server,user,pass); transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO)); transport.close(); System.out.println("发送成功!!!"); } public Session createSession(){ Properties props=new Properties(); props.setProperty("mail.transport.protocol", protocol); props.setProperty("mail.smtp.auth","true"); Session session=Session.getInstance(props); // session.setDebug(true); return session; } public MimeMessage createMessage(Session session)throws Exception{ MimeMessage message=new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); MimeMultipart multipart=new MimeMultipart("related"); MimeBodyPart bodyPart=new MimeBodyPart(); bodyPart.setContent(body,"text/html;charset=gb2312"); multipart.addBodyPart(bodyPart); //发附件 MimeBodyPart gifBodyPart=new MimeBodyPart(); FileDataSource fds=new FileDataSource("f:\\音乐.MP3");//F盘下的 音乐.MP3 文件。这里看个人情况 gifBodyPart.setDataHandler(new DataHandler(fds)); gifBodyPart.setContentID("音乐.MP3"); multipart.addBodyPart(gifBodyPart); message.setContent(multipart); message.saveChanges(); return message; } } //PS:把java发送邮件的导入的JAR包上传了,解压后导入你的项目里就可

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值