关于JavaMail 使用QQ邮箱发送邮件的问。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JavaMail 使用QQ邮箱发送邮件的问。相关的知识,希望对你有一定的参考价值。

把QQ邮箱作为发送方的时候就停在下面不走了。是什么回事啊?
DEBUG: setDebug: JavaMail version 1.4.5
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 465, isSSL false

【你所在的网络环境存在频繁的操作,请稍后重试 :可能是网络太慢,输入次数太多,暂时封锁。待会再试】
把电脑网页上了临时文件,记录,cookie清理一下,然后把电脑和路由重启以下就可以了,也就是清理已下电脑记录和换一下IP地址,

一般不会出现类似问题,应该属于系统BUG,建议联系客服处理,建议你使用在线提单,登陆http://kf.qq.com ,点在线提单,详细说明问题情况,3个工作日内会回复(会员会优先)
参考技术A 我也是的,有些用户就根本收不到邮件,而且登陆QQ邮箱查询,到已发送哪里 根本都看不到记录。
对了,上面的DEBUG信息是哪里打印出来的啊。麻烦告诉下。谢谢。
参考技术B 首先得开启pop3/smtp服务
步骤: 邮箱设置->账户本回答被提问者采纳
参考技术C 交换机和大锅饭二锅头热歌个人个人 参考技术D 设置账号密码

JavaMail实践--实现邮件发送

一、介绍

  1、主要功能:

    实现普通邮件的发送

    实现带有HTML标签的内容发送

    实现带有附件的邮件发送

  2、API

  3、QQ邮箱的认证

    这里使用的邮件主机是:smtp.qq.com

    需要获得QQ邮箱的授权码:需要在登录QQ邮箱后台在"设置"=》账号中开启POP3/SMTP服务 

二、源码分享

import java.util.Properties;
import java.util.Scanner;

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.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;

public class EMailDemo {

    public static void main(String[] args) {
        // EMailDemo.sendEmail();
        // EMailDemo.sendHtml(EMailDemo.getSession());
        EMailDemo.sendWithFile(getSession());
    }

    private static String to = null;
    private static String from = null;
    private static Scanner sc = new Scanner(System.in);

    private static Session getSession() {
        System.out.println("请输入收件人邮箱(任意):");
        String to = sc.nextLine();// 收件人
        System.out.println("请输入发件人邮箱(QQ):");
        String from = sc.nextLine();// 发件人
        System.out.println("请输入发件人邮箱的授权码:");
        String pop3 = sc.nextLine();// 发件人
        String host = "smtp.qq.com";// 指定发送邮件的QQ主机
        Properties properties = System.getProperties(); // 获取系统属性
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);
        properties.put("mail.smtp.auth", "true");
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties, new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, pop3); // 发件人邮件用户名、授权码
            }
        });
        return session;
    }

    public static void sendEmail(Session session) {
        try {
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);
            // Set From: 头部头字段
            message.setFrom(new InternetAddress(from));
            // Set To: 头部头字段
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            // Set Subject: 头部头字段
            System.out.println("请设置邮件标题:");
            message.setSubject(sc.nextLine());
            // 设置消息体
            System.out.println("请设置邮件内容:");
            message.setText(sc.nextLine());
            // 发送消息
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }

    public static void sendHtml(Session session) {
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            System.out.println("请设置邮件标题:");
            message.setSubject(sc.nextLine());
            // 发送 HTML 消息, 可以插入html标签
            System.out.println("请设置邮件内容(可以插入html标签):");
            message.setContent(sc.nextLine(), "text/html");
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }

    public static void sendWithFile(Session session) {
        try {
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            System.out.println("请设置邮件标题:");
            message.setSubject(sc.nextLine());

            // 创建消息部分
            BodyPart messageBodyPart = new MimeBodyPart();
            // 消息
            System.out.println("请设置邮件内容:");
            message.setText(sc.nextLine());
            // 创建多重消息
            Multipart multipart = new MimeMultipart();
            // 设置文本消息部分
            multipart.addBodyPart(messageBodyPart);
            // 附件部分
            messageBodyPart = new MimeBodyPart();
            System.out.println("请输入文件完整路径:");
            String filename = sc.nextLine();
            DataSource source = new FileDataSource(filename);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);
            multipart.addBodyPart(messageBodyPart);
            // 发送完整消息
            message.setContent(multipart);

            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

 

以上是关于关于JavaMail 使用QQ邮箱发送邮件的问。的主要内容,如果未能解决你的问题,请参考以下文章

关于JavaMail实现QQ邮箱发送邮件的简单实现1

JavaMail 邮件发送之使用qq邮箱

JavaMail实践--实现邮件发送

java Mail 发送外部邮件失败,求解,

java Mail 发送外部邮件失败,求解,

码javaMail+spring+qq邮箱发送邮件