使用javaMail进行腾讯,新浪,网易网上邮箱验证

本文介绍了一种使用JavaMail实现向多种类型的邮箱账号发送验证邮件的方法,包括QQ、网易和新浪等邮箱,并详细讲解了代码实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近本人在开发web项目中,使用到了javaMail来进行邮箱验证。最初刚接触javaMail开发的时候,本人搜索很多有关这方面的知识和案例,比如慕课网上的课程,但那些都只是针对本地邮箱服务器或者单个网上邮箱服务器的案例,不能解决向多种格式的邮箱账号发送邮件的功能。在一番琢磨之后,本人终于实验成功,在这里也分享给各位,希望对没有接触过javaMail开发的小伙伴们提供一点帮助。

javaMail的开发通常只需要引入一个mail.jar包就ok了,jar包可以去下载javaMail的api解压之后得到,非常简单,推荐下载高版本的api,例如1.4.7版本的,因为有些低版本的不支持MailSSLSocketFactory,不能进行qq邮箱的使用。

ok,准备工作做完,接下来就是上代码啦!

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;


import com.sun.mail.util.MailSSLSocketFactory;


public class MailUtil {
    public static boolean sendMail(String to, String code) throws Exception {
       
//1.判断一下输入的邮箱账号是否符合规范,不符合规范就直接返回false

//这里列出了qq,网易,新浪的三种邮箱规范,需要向其他格式的邮箱发送邮件的话就在判断中添加即可

if (!(to.split("@")[1].equals("qq.com")
                || to.split("@")[1].equals("163.com")
                || to.split("@")[1].equals("sina.com")
                || to.split("@")[1].equals("sina.cn")
                || to.split("@")[1].equals("2008.sina.com")
                || to.split("@")[1].equals("51uc.com"))) {
            return false;
       }
        // 1.创建连接对象,连接到邮箱服务器
        Properties props = new Properties();
        // 开启debug调试
        props.setProperty("mail.debug", "true");
        // 发送服务器需要身份验证
        props.setProperty("mail.smtp.auth", "true");
        // 发送邮件协议名称
        props.setProperty("mail.transport.protocol", "smtp");
        Session session = null;
        // 设置邮件服务器主机名 

      //发送邮件的邮箱如果是qq邮箱,值就是 "smtp.qq.com"如果是网易邮箱,值就是"smtp.163.com",同理,新浪就是"smtp.sina.com",这里用qq邮箱做示例。

props.setProperty("mail.smtp.host", "smtp.qq.com");


       
//qq邮箱不同于其它两种邮箱,它的使用需要进行ssl加密, 以下4行代码只有使用qq邮箱才用上

MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        props.put("mail.smtp.ssl.enable", "true");
       props.put("mail.smtp.ssl.socketFactory", sf);
       

//同时,这儿设置的邮箱密码qq邮箱也是与其它两者不同的。我们知道,进行javaMail开发首先要对发件邮箱进行设置,需要在邮箱设置中允许stmp/pop3的使用。 //而qq邮箱则在你开启stmp/pop3使用的时候会给予你一个授权码,那才是真正在邮箱开发中使用的邮箱密码。(不得不说老马保密工作还是一流)

session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(

"你的邮箱账号",

                        "你的邮箱密码");
            }
        });
        // 2.创建邮件对象
        Message message = new MimeMessage(session);
        // 2.1设置发件人:
        message.setFrom(new InternetAddress("
你的邮箱账号"));
        // 2.2设置收件人:
        message.setRecipient(RecipientType.TO, new InternetAddress(to));
        // 2.3设置邮件的主题
        message.setSubject("来自
******的激活邮件");
        // 2.4设置邮件的正文
        message.setContent(
                "<h1>来自
******的激活邮件,激活请点击以下链接</h1><h3><a href='"</a></h3>",
                "text/html;charset=UTF-8");
        // 3.发送一封激活邮件
        Transport.send(message);
        return true;
    }
}

至此,整个激活工作就算完成了,当用户收到邮件,点击了我们给出的url后,就能激活成功了。

javaMail的详细文档,都有以下多有类的详细信息: ACL Address AddressException AddressStringTerm AddressTerm AndTerm AuthenticationFailedException Authenticator BodyPart BodyTerm ByteArrayDataSource ComparisonTerm ConnectionAdapter ConnectionEvent ConnectionListener ContentDisposition ContentType DateTerm DeliveryStatus DispositionNotification FetchProfile FetchProfile.Item Flags Flags.Flag FlagTerm Folder FolderAdapter FolderClosedException FolderEvent FolderListener FolderNotFoundException FromStringTerm FromTerm Header HeaderTerm HeaderTokenizer HeaderTokenizer.Token IllegalWriteException IMAPFolder IMAPFolder.FetchProfileItem IMAPFolder.ProtocolCommand IMAPMessage IMAPSSLStore IMAPStore IntegerComparisonTerm InternetAddress InternetHeaders InternetHeaders.InternetHeader MailDateFormat MailEvent MailHandler MailSSLSocketFactory Message Message.RecipientType MessageAware MessageChangedEvent MessageChangedListener MessageContext MessageCountAdapter MessageCountEvent MessageCountListener MessageHeaders MessageIDTerm MessageNumberTerm MessageRemovedException MessagingException MethodNotSupportedException MimeBodyPart MimeMessage MimeMessage.RecipientType MimeMultipart MimePart MimePartDataSource MimeUtility Multipart MultipartDataSource MultipartReport NewsAddress NoSuchProviderException NotTerm OrTerm ParameterList ParseException Part PasswordAuthentication POP3Folder POP3Message POP3SSLStore POP3Store PreencodedMimeBodyPart Provider Provider.Type Quota Quota.Resource QuotaAwareStore ReadOnlyFolderException ReceivedDateTerm RecipientStringTerm RecipientTerm Report Rights Rights.Right SearchException SearchTerm SendFailedException SentDateTerm Service Session SharedByteArrayInputStream SharedFileInputStream SharedInputStream SizeTerm SMTPAddressFailedException SMTPAddressSucceededException SMTPMessage SMTPSendFailedException SMTPSSLTransport SMTPTransport Store StoreClosedException StoreEvent StoreListener StringTerm SubjectTerm Transport TransportAdapter TransportEvent TransportListener UIDFolder UIDFolder.FetchProfileItem URLName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值