精华内容
下载资源
问答
  • SpringBoot 动态配置邮箱发件

    千次阅读 2019-12-22 08:20:00
    点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文Women must be able to deal with lies...

    点击上方 "程序员小乐"关注, 星标或置顶一起成长

    每天凌晨00点00分, 第一时间与你相约

    每日英文

    Women must be able to deal with lies, tolerate perfunctory responses, endure deceptions, forget promises and let go of everything. 

    人一定要经得起假话, 受得起敷衍, 忍得住欺骗, 忘得了诺言, 放得下一切。

    每日掏心

    有种痛,只能独自咀嚼,慢慢回味。生命中的许多时候,不幸会突然降临,让我们措手不及。

    来自:ITDragon龙 | 责编:乐乐

    链接:cnblogs.com/itdragon/p/11239771.html#4339461

    程序员小乐(ID:study_tech)第 723 次推文   图片来自网络

    往日回顾:关于如何挣钱的35条建议!万字长文

       正文   

    现在的消息模块少不了邮件发送、短信发送和手机推送的功能。邮件发送的功能历史最为悠久,也算的上烂大街的功能。一般在配置文件中设置好邮箱地址、账号、密码和发件服务器地址后便不会再去改动。可是有的客户却希望人为指定发件人信息。这个需求并不过分,需要解决两个大问题:如何在容器启动成功后重新修改发送邮件的Bean。如何在服务器重启后,发件人依然是更改后的配置信息。这里记录实现的步骤。

    一、需求分析

    一)、在未配置邮箱账号时,系统拥有默认的邮箱发件人

    二)、重新设置邮箱发件人后,需立即生效

    三)、重启服务器后,邮箱发件人依然是更改后的邮箱账号,而非默认发件人

    二、基础的邮箱发送

    邮箱发送的功能放在现在变得非常的简单好用,一导二配三发送。????

    第一步:导入邮箱依赖包

    compile('org.springframework.boot:spring-boot-starter-mail')
    

    第二步:配置发件人邮箱信息

    spring:
        mail:
          host: smtp.mxhichina.com
          username: itdragon@xx
          password: itdragon
          default-encoding: utf-8
    

    第三步:发送邮件

    @Autowired
    lateinit var javaMailSender: JavaMailSender
    
    fun pushMsgEmail(target: String, subject: String, content: String) {
        if (target.isEmpty() || !Pattern.matches(REG_EMAIL_FORMAT, target)) return
        val mailMsg = SimpleMailMessage()
        mailMsg.setFrom(mailUserName!!)
        mailMsg.setTo(target)
        mailMsg.setSubject(subject)
        mailMsg.setText(content)
        javaMailSender.send(mailMsg)
    }
    

    三、可配置的邮件发送

    这里的可配置值的是配置邮箱的发件人。首先我们要解决第一个问题,JavaMailSender 的Bean对象是在容器启动成功后就已经注入到容器中。如何在容器启动后重新注入新的JavaMailSender 的Bean对象呢?网上找了一些案例,他们都是通过销毁Bean然后再重新创建Bean的方式实现。我有点好奇地是,为什么不直接将新的对象直接赋值从而替换原有的Bean对象?Spring默认是单例模式,从Java内存的角度看,这样做似乎没毛病!如果有不对的地方望不吝赐教????

    @Autowired
    lateinit var javaMailSender: JavaMailSender
    
    fun configEmail(postMailConfig: PostMailConfig): JavaMailSender {
        val javaMailSender = JavaMailSenderImpl()
        javaMailSender.host = postMailConfig.mailHost
        javaMailSender.username = postMailConfig.mailUsername
        javaMailSender.password = postMailConfig.mailPassword
        val javaMailProperties = Properties()
        javaMailProperties["mail.smtp.auth"] = true
        javaMailProperties["mail.smtp.starttls.enable"] = true
        javaMailProperties["mail.smtp.timeout"] = 5000
        javaMailProperties["mail.smtp.socketFactory.class"] = "javax.net.ssl.SSLSocketFactory"
        javaMailProperties["mail.smtp.socketFactory.port"] = "465"
        javaMailProperties["mail.smtp.port"] = "465"
        javaMailSender.javaMailProperties = javaMailProperties
        this.javaMailSender = javaMailSender
        return javaMailSender
    }
    

    再来解决第二个问题,服务器重启后,默认情况下依然会重新加载application.yml中的配置信息。这会出现邮箱发件人和实际配置的发件人不匹配的情况。其实这个问题也很好解决,加一个事件监听器,在容器初始化成功后执行,根据之前保存的邮箱信息,重新配置邮箱。当然,我们需要一张表记录当前发件人信息。

    // 创建事件监听器
    class ApplicationStartup : ApplicationListener<ContextRefreshedEvent> {
    
        override fun onApplicationEvent(contextRefreshedEvent: ContextRefreshedEvent) {
            val systemBaseConfigMapper = contextRefreshedEvent.applicationContext.getBean(SystemBaseConfigMapper::class.java)
            val postMailConfig = systemBaseConfigMapper.selectByMail()
            val mailService = contextRefreshedEvent.applicationContext.getBean(MailService::class.java)
            mailService.configEmail(postMailConfig)
        }
    
    }
    
    // 注册事件监听器
    fun main(args: Array<String>) {
    
        val springApplication = SpringApplication(StartApplication::class.java)
        springApplication.addListeners(ApplicationStartup())
        springApplication.run(*args)
    
    }
    

    最后发送邮件的代码如下

    @Service
    class MailServiceImpl : MailService {
    
        @Value("\${spring.mail.username}")
        var mailUserName: String? = null
    
        @Autowired
        lateinit var javaMailSender: JavaMailSender
        @Autowired
        lateinit var systemBaseConfigMapper: SystemBaseConfigMapper
    
        override fun pushMsgEmail(target: String, subject: String, content: String) {
            if (target.isEmpty() || !Pattern.matches(REG_EMAIL_FORMAT, target)) return
            val mailMsg = SimpleMailMessage()
            mailMsg.setFrom(mailUserName!!)
            mailMsg.setTo(target)
            mailMsg.setSubject(subject)
            mailMsg.setText(content)
            try {
                systemBaseConfigMapper.selectByMailName()?.let {
                    mailMsg.setFrom(it.value!!)
                }
                javaMailSender.send(mailMsg)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    
        override fun configEmail(postMailConfig: PostMailConfig): JavaMailSender {
            val javaMailSender = JavaMailSenderImpl()
            javaMailSender.host = postMailConfig.mailHost
            javaMailSender.username = postMailConfig.mailUsername
            javaMailSender.password = postMailConfig.mailPassword
            val javaMailProperties = Properties()
            javaMailProperties["mail.smtp.auth"] = true
            javaMailProperties["mail.smtp.starttls.enable"] = true
            javaMailProperties["mail.smtp.timeout"] = 5000
            javaMailProperties["mail.smtp.socketFactory.class"] = "javax.net.ssl.SSLSocketFactory"
            javaMailProperties["mail.smtp.socketFactory.port"] = "465"
            javaMailProperties["mail.smtp.port"] = "465"
            javaMailSender.javaMailProperties = javaMailProperties
            this.javaMailSender = javaMailSender
            return javaMailSender
        }
    
    }
    

    文章到这里就结束了,感谢阅读!ths!

    欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

    欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。

    猜你还想看

    阿里、腾讯、百度、华为、京东最新面试题汇集

    探究 Nginx 中 reload 流程的真相

    Linux 中的零拷贝技术,看完这篇文章你就明白了!

    HTTPS 原理分析:带着疑问层层深入

    关注「程序员小乐」,收看更多精彩内容
    

    嘿,你在看吗

    展开全文
  • Discuz 邮箱验证 (激活邮箱) 间隔时间修改,默认是5分钟,想修改短一点,不知道怎么修改,有知道的可以告诉一下谢谢
  • 本文我们将给出如何检测我们所设置的邮箱是否能接收和发送邮件。 首先、如果您想要实现邮件接受和发送功能,您需要在邮箱中开启POP3和SMTP协议。一般情况下,POP3协议用于邮件的接受,SMTP协议用于邮件的发送。我们...

    使用过JavaMail我们都知道,通过JavaMail这个工具,我们可以在自己的系统中实现邮件收发功能。本文我们将给出如何检测我们所设置的邮箱是否能接收和发送邮件。

    首先、如果您想要实现邮件接受和发送功能,您需要在邮箱中开启POP3和SMTP协议。一般情况下,POP3协议用于邮件的接受,SMTP协议用于邮件的发送。我们以QQ邮箱为例,如果您需要在您的系统中使用一个QQ邮箱为您接受和发送邮件,首先您需要进入QQ邮箱的设置页面,开启POP3和SMTP服务。

    这里写图片描述

    SMTP和POP3服务开启之后,您需要获取一个授权码,在接收邮件和发送邮件时需要使用该授权码而不是登录密码。一切设置就绪之后,我们来看如何通过Java Mail来检查您所设置的邮箱信息是否能够收件和发件。

    1、收件检测

    JavaMail API中定义了一个java.mail.Store类,它用于执行邮件接受任务,这个类的实例对象封装了某种邮件接受协议的底层实施细节,应用程序调用这个类中的方法就可以获得用户邮箱中的各种邮件夹的信息。JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法应用程序进而又获得该邮件夹中的所有邮件信息,而每封邮件信息JavaMail又分别使用一个Message对象进行封装。收件过程如下:

    • 从Session对象中获得实现了某种邮件发送协议的Store对象

    • 以某个邮箱账户的身份连上POP3服务器

    • 调用Store的getFolder方法,获取代表该账户的邮箱中的某个邮件夹的Folder对象。

    • 调用Folder对象中的getMessages或getMessage方法,获取邮件夹中所有邮件或者某一封邮件,每封邮件以一个Message对象返回

    那么如果我们需要检查我们设置的邮箱是否能够收件,我们只需要调用Store的isConnected方法,该方法用于检测客户端与邮件服务器是否已连接。该方法返回true表示已连接,返回false表示未连接。具体实现方法如下:

    public static boolean checkReceive() {
        String host = "pop.qq.com";//以QQ邮箱为例
        String username = "您的邮箱";
        String password = "授权码";
        String port = "服务端口号,QQ邮箱是995";
    
        boolean result = false;
    
        Properties p = new Properties();
        p.setProperty("mail.pop3.host", host); // 按需要更改
        p.setProperty("mail.pop3.port", port);
        // SSL安全连接参数
        p.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        p.setProperty("mail.pop3.socketFactory.fallback", "true");
        p.setProperty("mail.pop3.socketFactory.port", port);
    
        Session session = Session.getDefaultInstance(p, null);
        Store store;
        try {
            store = session.getStore("pop3");
            store.connect(host, username, password);
    
            result = store.isConnected();
        } catch (Exception e) {
            result = false;
        }
    
        return result;
    }

    2、发件检测

    JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送服务,这个类的实例对象封装了某种邮件发送协议底层实施细节,应用程序调用这个类中的方法可以把Message对象封装的邮件数据发送到指定的SMTP服务器。使用JavaMail发送邮件时过程如下:

    • 从Session对象中获得实现了某种邮件发送协议的Transport对象

    • 使用Session对象创建Message对象,并调用Message对象的方法封装邮件数据。

    • 连接指定的SMTP服务器,调用Transport对象中的邮件发送方法发送Message对象中封装的邮件数据。

    那么我们需要检测我们设置的邮箱信息是否正确,其实只是检测我们是否能够成功连接SMTP服务器即可。具体代码如下:

    public static boolean checkSend() throws GeneralSecurityException {
        Properties prop = new Properties();
        prop.setProperty("mail.host", "smtp.qq.com");
        prop.setProperty("mail.smtp.port", "SMTP端口");
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        //设置超时时间为20秒
        prop.setProperty("mail.smtp.timeout", "20000");
    
        if("SSL加密端口"){
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
               sf.setTrustAllHosts(true);
               prop.put("mail.smtp.ssl.enable", "true");
               prop.put("mail.smtp.ssl.socketFactory", sf);
        }
    
        boolean result = false;
    
        //1、创建session
        Session session = Session.getInstance(prop);
        //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);
        //2、通过session得到transport对象
        Transport ts;
        //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
        try {
            ts = session.getTransport();
            ts.connect("smtp.qq.com", "您的邮箱", "邮箱授权码");
            ts.close();
            result = true;
        } catch (NoSuchProviderException e1) {
            result = false;
        } catch (MessagingException e) {
            result = false;
        }
    
        return result;
    }
    展开全文
  • Java使用腾讯企业邮箱发邮件的例子

    千次阅读 2018-09-13 17:58:05
    这篇教程演示使用腾讯企业邮箱发邮件,文中代码已在java8环境下测试通过,文中的帐户名和密码等信息请修改为自己的企业邮箱账号进行测试。 邮件发送器 package me.zebe.cat.java.mail; import java.util.List...

    这篇教程演示使用腾讯企业邮箱发邮件,文中代码已在java8环境下测试通过,文中的帐户名和密码等信息请修改为自己的企业邮箱账号进行测试。

    邮件发送器

    package me.zebe.cat.java.mail;
    
    import java.util.List;
    
    /**
     * 邮件发送器
     *
     * @author Zebe
     */
    public class MailSender implements Runnable {
    
        /**
         * 发件人别名
         */
        private String fromAliasName;
    
        /**
         * 收件人
         */
        private String to;
    
        /**
         * 主题
         */
        private String subject;
    
        /**
         * 内容
         */
        private String content;
    
        /**
         * 附件列表
         */
        private List<String> attachFileList;
    
        /**
         * 构造器
         * @param fromAliasName 发件人别名
         * @param to 收件人
         * @param subject 主题
         * @param content 内容
         */
        public MailSender(String fromAliasName, String to, String subject, String content) {
            this.fromAliasName = fromAliasName;
            this.to = to;
            this.subject = subject;
            this.content = content;
        }
    
        /**
         * 构造器
         * @param fromAliasName 发件人别名
         * @param to 收件人
         * @param subject 主题
         * @param content 内容
         * @param attachFileList 附件列表
         */
        public MailSender(String fromAliasName, String to, String subject, String content, List<String> attachFileList) {
            this(fromAliasName, to, subject, content);
            this.attachFileList = attachFileList;
        }
    
        @Override
        public void run() {
            new SendEmailUtil(fromAliasName, to, subject, content, attachFileList).send();
        }
    
    }
    

    邮件发送线程池

    package me.zebe.cat.java.mail;
    
    import java.util.concurrent.*;
    
    /**
     * 邮件发送线程池
     *
     * @author Zebe
     */
    public class MailSenderPool {
    
        /**
         * 邮件发送器线程数量
         */
        private static int SENDER_TOTAL = 10;
    
        /**
         * 线程工厂(生产环境中建议使用带命名参数的线程工厂)
         */
        private static ThreadFactory threadFactory = Executors.defaultThreadFactory();
    
        /**
         * 线程池执行器(采用了Spring提供的CustomizableThreadFactory,如果不需要请使用默认线程工厂)
         */
        private static ExecutorService executor = new ThreadPoolExecutor(SENDER_TOTAL, 200,
                0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024), threadFactory,
                new ThreadPoolExecutor.AbortPolicy());
    
        /**
         * 内部静态实例
         */
        private static class Inner {
            private static MailSenderPool instance = new MailSenderPool();
        }
    
        /**
         * 获取实例
         *
         * @return 返回邮件发送线程池实例
         */
        public static MailSenderPool getInstance() {
            return Inner.instance;
        }
    
        /**
         * 通过线程发送
         *
         * @param sender 邮件发送器
         * @return 返回自身
         */
        public MailSenderPool sendByThread(MailSender sender) {
            executor.execute(sender);
            return getInstance();
        }
    
        /**
         * 关闭线程池
         */
        public void shutDown() {
            executor.shutdown();
        }
    
    }
    

    邮件发送工具类

    package me.zebe.cat.java.mail;
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    import java.security.GeneralSecurityException;
    import java.util.Date;
    import java.util.List;
    import java.util.Properties;
    
    /**
     * 邮件发送工具类。
     * 以下邮件中的配置参数,请在实际环境中,根据需要采取合适的配置方式。
     * 发送邮件依赖 com.sun.mail(1.6.1) 包、javax.mail(1.5.0-b01) 包。
     * 如果使用 Idea 运行,请将这两个包(可以直接到Maven目录下面去找)添加到项目的 Libraries 里面(快捷键:Ctrl + Alt + Shift + S)
     *
     * @author Zebe
     */
    public class SendEmailUtil {
    
        /**
         * 登录用户名
         */
        private final static String ACCOUNT = "xxxxxxx@xxxx.cn";
    
        /**
         * 登录密码
         */
        private final static String PASSWORD = "xxxxxxx";
    
        /**
         * 邮件服务器地址
         */
        private final static String HOST = "smtp.exmail.qq.com";
    
        /**
         * 发信端口
         */
        private final static String PORT = "465";
    
        /**
         * 发信协议
         */
        private final static String PROTOCOL = "ssl";
    
        /**
         * 发件人别名(可以为空)
         */
        private String fromAliasName;
    
        /**
         * 收件人
         */
        private String to;
    
        /**
         * 主题
         */
        private String subject;
    
        /**
         * 内容
         */
        private String content;
    
        /**
         * 附件列表(可以为空)
         */
        private List<String> attachFileList;
    
        /**
         * 构造器
         *
         * @param fromAliasName  发件人别名
         * @param to             收件人
         * @param subject        主题
         * @param content        内容
         * @param attachFileList 附件列表
         */
        public SendEmailUtil(String fromAliasName, String to, String subject, String content, List<String> attachFileList) {
            this.fromAliasName = fromAliasName;
            this.to = to;
            this.subject = subject;
            this.content = content;
            this.attachFileList = attachFileList;
        }
    
        /**
         * 认证信息
         */
        static class MyAuthenticator extends Authenticator {
    
            /**
             * 用户名
             */
            String username = null;
    
            /**
             * 密码
             */
            String password = null;
    
            /**
             * 构造器
             *
             * @param username 用户名
             * @param password 密码
             */
            public MyAuthenticator(String username, String password) {
                this.username = username;
                this.password = password;
            }
    
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        }
    
        /**
         * 发送邮件
         */
        public void send() {
            // 设置邮件属性
            Properties prop = new Properties();
            prop.setProperty("mail.transport.protocol", PROTOCOL);
            prop.setProperty("mail.smtp.host", HOST);
            prop.setProperty("mail.smtp.port", PORT);
            prop.setProperty("mail.smtp.auth", "true");
            MailSSLSocketFactory sslSocketFactory = null;
            try {
                sslSocketFactory = new MailSSLSocketFactory();
                sslSocketFactory.setTrustAllHosts(true);
            } catch (GeneralSecurityException e1) {
                e1.printStackTrace();
            }
            if (sslSocketFactory == null) {
                System.err.println("开启 MailSSLSocketFactory 失败");
            } else {
                prop.put("mail.smtp.ssl.enable", "true");
                prop.put("mail.smtp.ssl.socketFactory", sslSocketFactory);
                // 创建邮件会话(注意,如果要在一个进程中切换多个邮箱账号发信,应该用 Session.getInstance)
                Session session = Session.getDefaultInstance(prop, new MyAuthenticator(ACCOUNT, PASSWORD));
                // 开启调试模式(生产环境中请不要开启此项)
                session.setDebug(true);
                try {
                    MimeMessage mimeMessage = new MimeMessage(session);
                    // 设置发件人别名(如果未设置别名就默认为发件人邮箱)
                    if (fromAliasName != null && !fromAliasName.trim().isEmpty()) {
                        mimeMessage.setFrom(new InternetAddress(ACCOUNT, fromAliasName));
                    }
                    // 设置主题和收件人、发信时间等信息
                    mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                    mimeMessage.setSubject(subject);
                    mimeMessage.setSentDate(new Date());
                    // 如果有附件信息,则添加附件
                    if (!attachFileList.isEmpty()) {
                        Multipart multipart = new MimeMultipart();
                        MimeBodyPart body = new MimeBodyPart();
                        body.setContent(content, "text/html; charset=UTF-8");
                        multipart.addBodyPart(body);
                        // 添加所有附件(添加时判断文件是否存在)
                        for (String filePath : attachFileList) {
                            if (Files.exists(Paths.get(filePath))) {
                                MimeBodyPart tempBodyPart = new MimeBodyPart();
                                tempBodyPart.attachFile(filePath);
                                multipart.addBodyPart(tempBodyPart);
                            }
                        }
                        mimeMessage.setContent(multipart);
                    } else {
                        mimeMessage.setText(content);
                    }
                    // 开始发信
                    mimeMessage.saveChanges();
                    Transport.send(mimeMessage);
                } catch (MessagingException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
    

    发送邮件测试

    package me.zebe.cat.java.mail;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * 发送邮件测试
     *
     * @author Zebe
     */
    public class SendMailTest {
    
        /**
         * 运行入口
         *
         * @param args 运行参数
         */
        public static void main(String[] args) {
            // 设置发信参数
            final String fromAliasName = "自定义别名Test";
            final String to = "zebe@vip.qq.com";
            final String subject = "腾讯企业邮箱发信测试";
            final String content = "<h1>带多个附件的邮件测试</h1><p style='color:red'>这是邮件内容正文。</p>";
            // 设置附件路径(注意:res 是项目根目录下的一个文件夹)
            final List<String> attachFileList = Arrays.asList("res/1.png", "res/1.pdf");
            // 通过线程池发送邮件
            MailSenderPool pool = MailSenderPool.getInstance();
            pool.sendByThread(new MailSender(fromAliasName, to, subject, content, attachFileList)).shutDown();
        }
    
    }
    

    小结

    本文演示的是纯Java项目进行腾讯企业邮箱发信的例子,文中的帐户名和密码等信息请修改为自己的企业邮箱账号进行测试。


    本文首发于个人独立博客,文章链接:http://www.zebe.me/java-send-tencent-exmail

    展开全文
  • 使用matlab编程给qq或163邮箱邮件

    千次阅读 2017-07-18 22:52:03
    许多时候一个结果跑下来得花去好几个小时的时间,然后改改参数再继续跑,这样真的很让人不淡定啊,如果使用matlab编程让matlab跑出的让自己满意的结果通过邮件到自己手机上是不是美滋滋呢。接下来介绍matlab跑出...

    平时在科研中经常会被导师要求使用matlab跑一些大程序,许多时候一个结果跑下来得花去好几个小时的时间,然后改改参数再继续跑,这样真的很让人不淡定啊,如果使用matlab编程让matlab跑出的让自己满意的结果通过邮件发到自己手机上是不是美滋滋呢。接下来介绍matlab跑出结果后自动给自己手机邮箱发邮件?


    1. 开启qq邮箱的POP3/SMTP服务:

    在电脑上打开qq邮箱,在主界面点设置
    这里写图片描述

    然后点账户
    这里写图片描述

    往下拉,你就会看见下面这幅图所示的这几个服务,默认是关闭的,我这里已经把他们开启了,点击开启之后,你会得到一个授权码,这个授权码很重要,待会儿会用到,最好截图将它保存起来。
    这里写图片描述
    然后点击左下角的保存更改,这一步便完成了。

    2. 使用matlab编程实现给自己qq邮箱发邮件
    matlab中的sendmail函数是实现发邮件功能的,不过前提得设置一些东西,我把这些东西打包成了一个函数mailTome,主要设置和功能见下面代码:

    function mailTome(subject,content)
    MailAddress = '123456789@qq.com';%在这里输入你的qq邮箱
    password = 'xxxxxxx';  %在这里输入你之前得到的授权码,注意是授权码,不是你的qq邮箱登录密码!
    setpref('Internet','E_mail',MailAddress);
    setpref('Internet','SMTP_Server','smtp.qq.com');%这里是smtp.qq.com
    setpref('Internet','SMTP_Username',MailAddress);
    setpref('Internet','SMTP_Password',password);
    props = java.lang.System.getProperties;
    props.setProperty('mail.smtp.auth','true');
    props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
    props.setProperty('mail.smtp.socketFactory.port','465');
    sendmail(MailAddress,subject,content);
    end

    以上除了注释行需要修改外其他保持默认。然后在命令行窗口输入以下测试代码测试:

    subject = '程序结果已出';
    content = '程序已经跑完了,你可以到实验室看看了!';
    mailTome(subject,content); %调用函数发邮件

    然后不出意外的话你的qq邮箱就会收到你发的邮件了:
    这里写图片描述

    (不得不说使用matlab给qq发邮件,有时候不知道怎么回事,会出现错误,遇到这种情况等等再发,或者将matlab重启就好了,我也不知道是咋回事)

    3. 使用matlab编程实现给自己163邮箱发邮件
    接着我们实现用matlab给我们的163邮箱发邮件,和qq类似,也有一些不同,见如下代码:

    function mailTome(subject,content)
    MailAddress = '123456789@163.com';%在这里输入你的163邮箱
    password = 'xxxxxxx';  %在这里输入你的163邮箱登录密码即可,记住是登录密码,不是授权码!
    setpref('Internet','E_mail',MailAddress);
    setpref('Internet','SMTP_Server','smtp.163.com');%这里是smtp.163.com
    setpref('Internet','SMTP_Username',MailAddress);
    setpref('Internet','SMTP_Password',password);
    props = java.lang.System.getProperties;
    props.setProperty('mail.smtp.auth','true');
    props.setProperty('mail.smtp.socketFactory.class', 'javax.net.ssl.SSLSocketFactory');
    props.setProperty('mail.smtp.socketFactory.port','465');
    sendmail(MailAddress,subject,content);
    end

    以上除了注释行需要修改外其他保持默认。然后在命令行窗口输入以下测试代码测试:

    subject = '程序结果已出';
    content = '程序已经跑完了,你可以到实验室看看了!';
    mailTome(subject,content); %调用函数发邮件

    然后和qq类似不出意外的话你的163邮箱就会收到你发的邮件了:
    这里写图片描述

    展开全文
  • C#个人邮箱发邮件给多个邮箱

    千次阅读 2018-04-22 15:50:29
    sw = new StreamWriter("D:\\邮件\\发送收人的详细信息(休眠时间、是否发送、读取excel当前行数、系统当前时间格式)", true); System.DateTime currentTime = new System.DateTime();//获取系统时间时间...
  • 近两个月来,由于工作关系,前前后后应该阅读了1千多份(都是通过电子邮箱接收的)求职简历了吧。在这些简历中,有我非常喜欢的,也有我一眼看上就想删除的。下面,我就先总结一下这批简历中存在的一些问题,然后再...
  • 就是当用户更改邮箱并提交之后,一封包含一个链接的邮件到用户的新邮箱中,当用户点击该链接后,打开对应的php文件,核实哈希码,然后修改dede数据库中的邮箱字段。 其中有这样的一段代码: #api{{ if(defined('...
  • 以前的时候想着java邮件很简单,因为当时使用的是outlook实现的,有...就在今天,遇到的需求是给一个QQ邮箱发一份邮件,刚看到需求一看,这不很简单么,随便改改就行了。  于是我花了15分钟写出来全部代码,但是花
  • 近两个月来,由于工作关系,前前后后应该阅读了一千多份(都是通过电子邮箱接收的)求职简历了吧。在这些简历中,有我非常喜欢的,也有我一眼看上就想删除的。下面,我就先总结一下这批简历中存在的一些问题,然后再...
  • AWS SESQQ邮箱拒收解决方案

    千次阅读 2019-02-22 10:48:12
    文章目录1 背景1.1 现象1.2 环境1.3 ...先说现象,现象是用使用AWS SES发送邮件,QQ邮件收箱和垃圾箱都没有mail。 Mail 必须要在自助查询-收查询才能找到,发现下面有一栏被系统拦截的选项。 本文并不是因为ip...
  • 背景 笔者所在公司在某互联网公司租用了...近日笔者偶然发现这些客服用邮箱的收箱里有大量的退信通知,这些邮件的标题绝大多数是“系统退信”,邮件内容是告知收人邮件地址并不存在。这些邮件账号仅用于发送服...
  • import smtplib from email.mime.text import MIMEText from email.utils import formataddr from datetime import ...# 发件邮箱账号 my_sender = 'l1525943131@163.com' # my_sender = '1525943131@qq.com' # 收...
  • import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrfrom datetime import datetime # 发件邮箱账号my_sender = 'XXXX@163.com'# my_sender = '1525943131@qq.com'# 收人...
  • 近两个月来,由于工作关系,前前后后应该阅读了1千多份(都是通过电子邮箱接收的)求职简历了吧。在这些简历中,有我非常喜欢的,也有我一眼看上就想删除的。下面,我就先总结一下这批简历中存在的一些问题,然后再...
  • 最近这个话题频频出现,而且讨论地越来越激烈,也越来越有趣。最开始是在人人网上当做笑口被大家广为扩散的那张图片,某大学在申请... 博主在做简历这事情上,经常也会提醒师弟师妹们邮箱一定换一个看起来正式一点
  • PS另外,还有一个替代方法,把邮箱移动到另一个邮箱存储,这可以使得更改立即生效。 https://technet.microsoft.com/zh-cn/library/bb684892(v=exchg.80).aspx 在合理的时间段内不强制使用邮箱大小...
  • 实现邮箱注册账号并验证邮箱

    千次阅读 2019-01-05 09:01:15
    填写完邮箱,设定激活链接失效时间,激活后可提交该表单页,完成注册。 两种方法大同小异 以1为例: 采用163邮箱 package com.email.test; import org.springframework.stereotype.Service; @Service publ...
  • jsp网页开发中,通过注册邮箱找回密码,并限制连接的有效时间  在很多注册系统中,都会有忘记密码通过邮箱找回密码这一功能,但这是怎么实现的呢。通过自己做的一个小项目来说说我是怎么做的吧。首先...
  • 邮箱发送及邮箱验证

    千次阅读 2018-10-31 20:27:44
    发送邮件 在settings.py中添加以下设置: EMAIL_USE_SSL = True ...EMAIL_PORT = 465 # 根据自己的邮箱修改 EMAIL_HOST_USER = "xxx@qq.com" # 输入自己的邮箱地址 EMAIL_HOST_PASSWORD = "...
  • 腾讯科技讯(明轩)北京时间6月27日消息,据国外媒体报道,Facebook周二证实,该公司确实在本周一对用户个人主页(Profile)中的电子邮箱地址进行了自动更改。Facebook表示,此举过于鲁莽,公司应当在此问题上更好的...
  • 2020年9月22日登录我亲爱的126邮箱,提示有风险无法登录。于是我准备修改密码,一看手机号是n年前淘汰的手机号(此号已是空号),绝望了… 我要更换手机号,根据网易的指引开始我的网易邮箱账号申诉之旅。 一次失败...
  • 近两个月来,由于工作关系,前前后后应该阅读了1千多份(都是通过电子邮箱接收的)求职简历了吧。在这些简历中,有我非常喜欢的,也有我一眼看上就想删除的。下面,我就先总结一下这批简历中存在的一些问题,然后再...
  • 将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
  • 邮箱服务器

    万次阅读 2019-03-05 10:26:26
    3、IMAP提供的摘要浏览功能可以让你在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。 4、POP3需要下载未阅读的邮件,IMAP可以不用把所有的邮件全部下载,而是通过客户端直接对服务器...
  • 强制邮箱大写

    2017-05-17 09:14:09
    前段时间解决一个bug。 WF邮件的时候,发现有个客户总收不到...然后让basis帮忙修改邮箱,全部大写(或者小写),问题就解决了。 正常,前台屏幕输入的,都会自动转换为大写,但是邮箱这个字段,支持小写。 我在
  • Java实现邮箱激活账户实例

    千次阅读 多人点赞 2017-07-24 22:39:34
    在网站注册时一般都会要验证注册用户身份的合法性,通常的做法是提供手机号验证或者邮箱...这里通过实例来介绍一下邮箱验证的实现过程,例子可以运行,暂时没有发现什么问题,不过也可能有不安全的地方,欢迎大家指正。
  • 演示了恶意攻击者如何利用XSS漏洞攻下雅虎邮箱,将受害者收箱中的邮件到外部站点;以及构建病毒,这个病毒可以通过向邮件签名中添加恶意脚本,附加在所有传出的电子邮件中。 由于恶意代码就位于邮件消息的正文...
  • php实现邮箱验证

    千次阅读 2018-01-17 22:17:01
    将验证码以连接方式到用户邮箱;用户点击连接将验证码回网站;网站验证这个验证码是否是为这个用户生成的验证码;帐号需要在24小时内验证,否则帐号失效。 1. 准备工作 需要添加phpMailer类来邮件。下载...
  • 域名邮箱和邮件服务器

    千次阅读 2020-07-10 21:34:49
    目录邮箱flag域名邮箱Yandex配置步骤邮件服务器邮件服务器概述设置域名解析卸载`sendmail`安装`Postfix`和`Dovecot`查看版本修改邮件传输代理查看是否修改成功修改`Postfix`配置修改`Dovecot`配置修改防火墙配置配置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 107,078
精华内容 42,831
关键字:

修改邮箱发件时间