精华内容
下载资源
问答
  • 原创无发件箱邮件

    2013-08-25 02:39:04
    利用某某公司对某些方面的照顾,总结出一个在没有发件箱的情况下发送邮件,百分百进收件箱
  • 需要用到的jar包 ... 做这个功能是因为我女朋友每个月都需要手动去几十个人的考勤、考核邮件,实在是太过重复的做一很乏味的事情,所以才有了这个程序,不过,界面是使用的控制台,简单一点。 核心代码展示

    需要用到的jar包
    1.freemarker-2.3.19.jar
    2.javax.mail.jar
    3.javax.activation.jar

    本次测试邮箱是腾讯企业邮箱,其他未经测试。
    做这个功能是因为我女朋友每个月都需要手动去发几十个人的考勤、考核邮件,实在是太过重复的做一件很乏味的事情,所以才有了这个程序,不过,界面是使用的控制台,简单一点。

    核心代码展示

    /**
         * 发送邮件
         * @author hezhao
         * @Time   2017年3月13日 上午11:25:15
         */
        public void send() {
            System.out.println("正在发送邮件至:::["+to+"]  ...");
    
            // 设置邮件服务器
            Properties prop = System.getProperties();
            prop.put("mail.smtp.host", stmpmailServer);
            prop.put("mail.smtp.auth", "true");
            prop.put("mail.transport.protocol", this.send);
            prop.put("mail.smtp.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
            prop.put("mail.smtp.socketFactory.port", this.smtpport);
            prop.put("mail.smtp.socketFactory.fallback", "false");
    
            // 使用SSL,企业邮箱必需!
            // 开启安全协议
            MailSSLSocketFactory sf = null;
            try {
                sf = new MailSSLSocketFactory();
                sf.setTrustAllHosts(true);
            } catch (GeneralSecurityException e1) {
                e1.printStackTrace();
            }
            prop.put("mail.smtp.starttls.enable", "true");
            prop.put("mail.smtp.ssl.socketFactory", sf);
    
            // 获取Session对象
            Session session = Session.getDefaultInstance(prop, new Authenticator() {
                // 此访求返回用户和密码的对象
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    PasswordAuthentication pa = new PasswordAuthentication(username,
                            password);
                    return pa;
                }
            });
            // 设置session的调试模式,发布时取消
            session.setDebug(true);
    
            try {
                // 封装Message对象
                Message message = new MimeMessage(session);
                // message.setFrom(new InternetAddress(from,from)); //设置发件人
    
                // 设置自定义发件人昵称
                String nick_from = "";
                try {
                    nick_from = javax.mail.internet.MimeUtility.encodeText(this.nickname_from);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                message.setFrom(new InternetAddress(nick_from + " <" + from + ">"));
    
                // 设置自定义收件人昵称
                String nick_to = "";
                try {
                    nick_to = javax.mail.internet.MimeUtility.encodeText(this.nickname_to);
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(nick_to + " <" + to + ">"));// 设置收件人
                message.setSubject(mailSubject);// 设置主题
                message.setContent(mailContent, "text/html;charset=utf8");// 设置内容(设置字符集处理乱码问题)
                message.setSentDate(new Date());// 设置日期
    
                // 发送
                Transport.send(message);
                System.out.println("发送成功...");
    
                //保存邮件到发件箱
                saveEmailToSentMailFolder(message);
    
                if(mailSubject.contains("考勤")){
                    FileLog.writeLog(this.nickname_to + " <" + to + ">发送成功");
                }else{
                    FileLog.writeLog(this.nickname_to + " <" + to + ">发送成功");
                }
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("发送邮件异常...");
    
                if(mailSubject.contains("考勤")){
                    FileLog.writeLog(this.nickname_to + " <" + to + ">发送失败");
                }else{
                    FileLog.writeLog(this.nickname_to + " <" + to + ">发送失败");
                }
            }
        }

    保存至发件箱

    /**
         * 获取用户的发件箱文件夹
         * 
         * @param message
         *            信息
         * @param store
         *            存储
         * @return
         * @throws IOException
         * @throws MessagingException
         */
        private Folder getSentMailFolder(Message message, Store store)
                throws IOException, MessagingException {
            // 准备连接服务器的会话信息
            Properties props = new Properties();
            props.setProperty("mail.store.protocol", get);
            props.setProperty("mail.imap.host", imapmailServer);
            props.setProperty("mail.imap.port", "143");
    
            /** QQ邮箱需要建立ssl连接 */
            props.setProperty("mail.imap.socketFactory.class",
                    "javax.net.ssl.SSLSocketFactory");
            props.setProperty("mail.imap.socketFactory.fallback", "false");
            props.setProperty("mail.imap.starttls.enable", "true");
            props.setProperty("mail.imap.socketFactory.port", imapport);
    
            // 创建Session实例对象
            Session session = Session.getInstance(props);
            URLName urln = new URLName(get, imapmailServer, 143, null,
                    username, password);
            // 创建IMAP协议的Store对象
            store = session.getStore(urln);
            store.connect();
    
            // 获得发件箱
            Folder folder = store.getFolder("Sent Messages");
            // 以读写模式打开发件箱
            folder.open(Folder.READ_WRITE);
    
            return folder;
        }
    
        /**
         * 保存邮件到发件箱
         * 
         * @param message
         *            邮件信息
         */
        private void saveEmailToSentMailFolder(Message message) {
    
            Store store = null;
            Folder sentFolder = null;
            try {
                sentFolder = getSentMailFolder(message, store);
                message.setFlag(Flag.SEEN, true); // 设置已读标志
                sentFolder.appendMessages(new Message[] { message });
    
                System.out.println("已保存到发件箱...");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
    
                // 判断发件文件夹是否打开如果打开则将其关闭
                if (sentFolder != null && sentFolder.isOpen()) {
                    try {
                        sentFolder.close(true);
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                }
                // 判断邮箱存储是否打开如果打开则将其关闭
                if (store != null && store.isConnected()) {
                    try {
                        store.close();
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

    获取模板内容

       /**
         * 得到模板内容
         * @author hezhao
         * @Time   2017年3月13日 下午1:01:08
         * @param fileName
         * @param map
         * @return
         */
        public String getMailText(String fileName,Map<String,Object> map){
            String htmlText = null;
            try {
                Template template = config.getTemplate(fileName);
                htmlText = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (TemplateException e) {
                e.printStackTrace();
            }
            return htmlText;
        }
    

    替换模板内容

    FreemarkerUtil freemarkerUtil = null;
    try {
         freemarkerUtil = (FreemarkerUtil) context.getBean("freemarkerUtil");
    } catch (Exception e) {
        System.out.println("出现异常!!!");
        e.printStackTrace();
    }           
    String mailContent = freemarkerUtil.getMailText(fileName, map);
    

    HTML模板(这个还是景洲帮我实现的)

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
        </head>
        <style>
            table{border-collapse:collapse; text-align: center;font-size:12px;}
            .yellow{background: #FFFF00;}
            .blod{font-weight: bold;}
        </style>
        <body>
        <table width="1160"  border="1">
          <tr>
            <td colspan="11" align="center" style="font-size: 22px;">${title}</td>
          </tr>
          <tr>
            <td rowspan="2" class="yellow">序号</td>
            <td rowspan="2" class="yellow">部门</td>
            <td rowspan="2" class="yellow">姓名</td>
            <td rowspan="2" class="yellow">入职时间</td>
            <td colspan="5" class="blod" style="font-size: 14px;">考勤结果汇总</td>
            <td> </td>
            <td rowspan="2" >备注</td>
          </tr>
          <tr>
            <td>正常出勤</td>
            <td>请假小时</td>
            <td>迟到分钟</td>
            <td>迟到扣款</td>
            <td>旷工天数</td>
            <td>休年假天数</td>
          </tr>
          <tr>
            <td>${no}</td>
            <td>${dept}</td>
            <td>${name}</td>
            <td>${intotime}</td>
            <td class="yellow blod">${workday}</td>
            <td class="blod">${outhour}</td>
            <td class="blod">${deletemin}</td>
            <td class="blod">${deletemoney}</td>
            <td class="blod">${kg}</td>
            <td class="blod">${year}</td>
            <td>${remark}</td>
          </tr>
        </table>
    
        <div>
            <br />
        </div>
    
        <hr style="width: 210px; height: 1px;" color="#b5c4df" size="1" align="left">
    
        <div style="font-size: 14px;font-family: 'lucida Grande', Verdana;">
            <span>${bottom}</span>
        </div>
    
        </body>
    </html>
    展开全文
  • 【杂记】000-Outlook发送邮件后在发件箱出现两次 【杂记】000-Outlook发送邮件后在发件箱出现两次 1、现象 2、解决方法 1、现象   使用Outlook 2016配置好邮箱账号之后,能够成功收发邮件,但所有的已...

    【杂记】000-Outlook发送邮件后在发件箱出现两次

    1、现象

      使用Outlook 2016配置好邮箱账号之后,能够成功收发邮件,但所有的已发送邮件都会在发件箱中出现两次。虽不影响使用,但感官上对强迫症有强烈的杀伤作用!

    2、解决方法

       Outlook 文件->选项->邮件->保存邮件,将其中的“在已发送邮件文件夹中保留邮件副本”复选框取消勾选,即可。

    展开全文
  • 易语言简单邮件协议发送源码,简单邮件协议发送
  • imap4命令的详细说明可参考:...imap4有个list命令可以查看邮箱中的所有文件夹,如收件箱,发件箱,草稿箱等,python代码如下: imapclient = imaplib.IMAP4_SSL(imap_server,"993") imapclient.login(email_u...

    imap4命令的详细说明可参考:http://james.apache.org/server/rfclist/imap4/rfc2060.txt
    imap4有个list命令可以查看邮箱中的所有文件夹,如收件箱,发件箱,草稿箱等,python代码如下:

    imapclient = imaplib.IMAP4_SSL(imap_server,"993")
    imapclient.login(email_user,password)
    print(imapclient.list())
    

    对于163邮箱,输出如下: “INBOX"表示收件箱,”&g0l6P3ux-“表示收件箱,”&XfJT0ZAB-"表示发件箱

    ('OK', [b'() "/" "INBOX"', b'(\\Drafts) "/" "&g0l6P3ux-"', b'(\\Sent) "/" "&XfJT0ZAB-"', b'(\\Trash) "/" "&XfJSIJZk-"', b'(\\Junk) "/" "&V4NXPpCuTvY-"', b'() "/" "&dcVr0mWHTvZZOQ-"'])
    

    对于yahoo邮箱,输出如下:

    ('OK', [b'(\\Archive \\HasNoChildren) "/" "Archive"', b'(\\Junk \\HasNoChildren) "/" "Bulk Mail"', b'(\\Drafts \\HasNoChildren) "/" "Draft"', b'(\\HasNoChildren) "/" "Inbox"', b'(\\Sent \\HasNoChildren) "/" "Sent"', b'(\\Trash \\HasNoChildren) "/" "Trash"'])
    

    然后选择发件箱

    response,data=imapclient.select('Sent',False)#针对yahoo邮箱
    response,data=imapclient.select('&XfJT0ZAB-',False)#针对163邮箱
    typ, data = imapclient.search(None, 'ALL')
    mail_number = data[0].split()
    for num in mail_number:
    	typ, data = imapclient.fetch(num, '(UID BODY.PEEK[])')
    	if 'OK'!=typ:
    		print('fetch mail failed!',num)
    		continue
    	#开始处理邮件,可以写到文件中
    	filename = './file/imap/'+mail_box+'/'+email_user+'_imap_'+num.decode()+".eml"
    	emlfile = open(filename,'wb')
    	emlfile.write(data[0][1])
    	emlfile.close()
    

    同理,可以用上述方法下载草稿箱、垃圾箱的邮件

    展开全文
  • SpringBoot多邮件发送邮件

    千次阅读 2020-06-16 14:19:36
    最近由于业务需要,需要使用邮件对用户进行通知,但是单个邮箱有发送限制,当推送量过多时,经常会出现失败,于是考虑使用多个邮箱进行发送,由于spring-boot-starter-mail不支持同时配置多个邮件源,所以决定自己...

    前言

      最近由于业务需要,需要使用邮件对用户进行通知,但是单个邮箱有发送限制,当推送量过多时,经常会出现失败,于是考虑使用多个邮箱进行发送,由于spring-boot-starter-mail不支持同时配置多个邮件源,所以决定自己动手实现。

    实现思路

      spring-boot-starter-mail会根据spring.mail.xxx相关配置对JavaMailSender进行自动配置。但是只支持单个邮箱。为了实现多邮件源,可以参照上述逻辑。在配置文件内配置好,多个邮件源。然后读取配置文件,手动对JavaMailSender进行配置,并将其初始化完毕的JavaMailSender存储容器内。然后发送时随机取出JavaMailSender进行发送。

    引入依赖

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    

    邮件yml配置

    替换实际的邮件配置

    # 配置邮件
    mail:
      configs:
        # 账号
        - username: fapiao@QQ.com
          password: 123456
          host: smtp.qq.com
          port: 25
          protocol: smtp
          default-encoding: UTF-8
        # 账号A
        - username: fapiaoa@QQ.com
          password: 123456
          host: smtp.qq.com
          port: 25
          protocol: smtp
          default-encoding: UTF-8
    

    MailConfig

    @Data
    @Component
    @ConfigurationProperties(prefix = "mail")
    public class MailConfig {
    
        private List<MailProperties> configs;
    
        @Data
        public static class MailProperties {
    
            /**
             * 密码
             */
            private String username;
    
            /**
             * 密码
             */
            private String password;
    
            /**
             * host
             */
            private String host;
    
            /**
             * 端口
             */
            private Integer port;
    
            /**
             * 协议
             */
            private String protocol;
    
            /**
             * 默认编码
             */
            private String defaultEncoding;
    
        }
    
    }
    

    MailSenderConfig

    @Slf4j
    @Component
    @AllArgsConstructor
    public class MailSenderConfig {
    
        private final MailConfig mailConfig;
    
        private final List<JavaMailSenderImpl> senderList;
    
        /**
         * 初始化 sender
         */
        @PostConstruct
        public void buildMailSender(){
            List<MailConfig.MailProperties> mailConfigs = mailConfig.getConfigs();
            log.info("初始化mailSender");
            mailConfigs.forEach(mailProperties -> {
    
                // 邮件发送者
                JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
                javaMailSender.setDefaultEncoding(mailProperties.getDefaultEncoding());
                javaMailSender.setHost(mailProperties.getHost());
                javaMailSender.setPort(mailProperties.getPort());
                javaMailSender.setProtocol(mailProperties.getProtocol());
                javaMailSender.setUsername(mailProperties.getUsername());
                javaMailSender.setPassword(mailProperties.getPassword());
    
                // 添加数据
                senderList.add(javaMailSender);
            });
        }
    
        /**
         * 获取MailSender
         * @return CustomMailSender
         */
        public JavaMailSenderImpl getSender(){
            if(senderList.isEmpty()){
                buildMailSender();
            }
            // 随机返回一个JavaMailSender
            return senderList.get(new Random().nextInt(senderList.size()));
        }
    
        /**
         * 清理 sender
         */
        public void clear(){
            senderList.clear();
        }
    
    }
    

    MailService

    public interface MailService {
    
        /**
         * 发送邮件
         * @return 返回 true 或者 false
         */
        boolean sendMail();
    
    }
    

    MailServiceImpl

    @Service
    @AllArgsConstructor
    public class MailServiceImpl implements MailService {
    
        private final MailSenderConfig senderConfig;
    
        @Override
        public boolean sendMail() {
    
            JavaMailSenderImpl mailSender = senderConfig.getSender();
    
            //创建SimpleMailMessage对象
            SimpleMailMessage message = new SimpleMailMessage();
            //邮件发送人
            message.setFrom(Objects.requireNonNull(mailSender.getUsername()));
            //邮件接收人
            message.setTo("2583174414@qq.com");
            //邮件主题
            message.setSubject("测试邮件");
            //邮件内容
            message.setText("测试邮件内容");
            //发送邮件
            mailSender.send(message);
    
            return true;
        }
    }
    

    测试

    @SpringBootTest
    @RunWith(SpringRunner.class)
    class MailServiceImplTest {
    
        @Autowired
        private MailServiceImpl mailService;
    
        @Test
        void sendMail() {
            mailService.sendMail();
        }
    }
    

    测试结果

    注意的点

    • 需要检查邮箱配置相关协议是否开启。
    • 如果使用QQ邮箱进行发送,密码不是邮箱密码,而是授权码。

    拓展

      上述是将邮箱配置写入配置文件,在没有使用配置中心的情况下,如果邮箱源被限制,更改起来相对麻烦。可以将配置存入数据库,在启动的时候从数据库进行加载。如果邮箱源发生更改,可直接更改数据库邮箱源配置,然后调用MailSenderConfig.clear()方法,等待下次发送的时候,会重新初始化配置。

    结尾

      如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

      我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

    展开全文
  • html邮件发送模板

    2020-04-30 18:05:27
    邮件发送模板,纯HTML可扩展应用,适用于站点注册通知,登录通知,操作通知等,源码为纯HTML需用功能需配合后端开发!
  • XMail下载地址 ... 此下载地址为相关jar包及...简单几步,轻松实现发送邮件,把javamail进行了包装。支持像多人发送,多人抄送。多附件,纯文本及html格式邮件。 import java.util.Date; import javax.mail.Message; impor
  • SAP系统对外发送邮件的配置,内有详细原理说明,帮助新人理解配置原理,把握设计精髓。
  • :backhand_index_pointing_right: 发送你的 :envelope_selector: 电子邮件 :open_mailbox_with_raised_flag: 收件箱进入Slack 解析收到的电子邮件,并向Slack频道发送精美的消息。 如何安装 npm install slackmail ...
  • 无后台网站发送邮件方法(formspree)

    千次阅读 2018-09-03 13:37:53
    &lt;!doctype html&gt; &lt;...gt;...无后台网站发送邮件方法(formspree)开通黄金会员才能使用AJAX提交,否则只能使用form提交&lt;/title&gt; &lt;/head&gt; &lt;body&gt
  • Outlook发件箱种的邮件不能删除怎么办?.docx
  • 通过下面两句代码即可获得该邮箱下所有文件夹名称 Folder defaultFolder = store.getDefaultFolder(); Folder[] allFolder = defaultFolder.list... // 收件箱 IMAPFolder sendFolder = (IMAPFolder) store.getFolder
  • win10自带邮箱发件箱为空

    千次阅读 2020-10-18 00:37:13
    发件箱 win10 自带邮箱,登录 QQ 邮箱,密码正确,收件箱能够显示邮件列表;发件箱空空如也。 已发送邮件 原来已发送邮件在【已发送邮件】里面 ???? 所以,发件箱可以理解为是草稿箱。 参考 ...
  • java发送邮件的两种通用方法 一、 本文讲解的是基于smtp协议,发送...不过不了解也没关系,只需要知道,smtp协议存在一个安全漏洞,就是smtp协议允许你两次设置发件人和收件人信息。第一次发送命令行mail from:...
  • 删除outlook中发件箱中无法发送的大附件邮件 今天使用outlook发邮件,由于附件太大滞留在发信箱里无法发送,也删除不了,再给刚发的接收者(领导)发无附件邮件也发不出去了,晕,到网上找了一圈,官网的写的最...
  • 发送所有邮件到你的收件箱的机器人对GTD和电子邮件极客有用。安装这个机器人作为免费的SaaS at工作,但是您可以自由地从这个源代码构建您自己的机器人。bot应用程序被dockerized了,但如果你想在本地机器上运行bot,...
  • 两步便可轻松解决: 1、“发送服务器”按照如下方式设置 2、“高级”选项按如下方式设置 转载于:https://blog.51cto.com/sutomy/878949
  • 该软件包可帮助您从多个电子邮件帐户从Laravel应用程序发送邮件。 该软件包支持发送排队的,本地化的和批量邮件。 该软件包适用于SMTP和log驱动程序。 目录 从数据库获取邮件 疑难排解 对于包装开发商 要求 ...
  • windows 发件箱

    2010-10-29 16:25:32
    由于这个东西是给公司写的 用来提供意见的发件箱 ...也就是说发邮件的信箱其实是自己的 用户实际上是通过登陆你的信箱发邮件 而不是使用自己的邮箱 我们所理解的发件箱其实只是一个我们会发的地址而已
  • javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收人乱码 查看debug 邮件处理过程发现邮件头没有编译, 内容是base64编码,所以邮箱收不到或者收到的是base64编码后的一堆乱码,
  • JavaMail怎样获取收件箱,发件箱,垃圾箱等等的全名?方法如下 try { store = session.getStore("imap"); store.connect(address, password); //先获得收件箱,这个文件夹肯定每家的邮箱都有,而且名字很...
  • 工作中经常需要发送邮件,在迁移重要数据时,需要对...1.foxmail会创建一个以邮箱账户命名的文件夹,该文件夹下存放了邮箱账户的所有相关信息(账户配置,收件箱,发件箱等),这个文件夹在这里就是D:\worksoft\Fox...
  • 实习生 关于新实习的每周电子邮件直接发送到您的收件箱 去做 修复电子邮件的 CSS 更改算法 整合 Indeed 和 Internship.com
  • 1、关闭Outlook后再打开,在邮件默认发送之前,迅速删除发件箱邮件就可以了; 2、第二种方法,执行“文件--勾选脱机”,然后删除发件箱邮件,删除后再去掉脱机的勾选就行了 转载于:...
  • 不要在您的邮件中使用带有代码的注释和说明,否则可能会导致垃圾邮件箱被驱逐:)。 重要的是要注意,有时标头区域中的样式不应该或不需要内联。 这些实例将在注释中进行相应标记。 注意事项: 并非标题区域中的...
  • javaMail发送邮件设置发件人中文昵称

    万次阅读 2017-08-15 15:16:13
    public class TextMessage { //发送信件邮箱的用户名及密码 static String username="272138576"; static String password="********"; public static void main(String [] args)throws Exception{
  • #1泄露的电子邮件数据库: ... ...使用特定在线服务或平台的所有人的电子邮件地址都存储在这些网站的服务器上。...很多时候,这些服务器被专业黑客入侵,他们...这是垃圾邮件发送者获取您的电子邮件地址的最常见方式之一.
  • VB代码自动发送邮件

    2013-03-12 15:59:34
    VB代码自动发送邮件 Me.Visible = False Dim objEmail As Object Set objEmail = CreateObject("CDO.Message") objEmail.From = "elcasyc530@163.com" objEmail.Subject = "调查资料" 'objEmail.To = InputBox...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,413
精华内容 6,165
关键字:

发件箱的邮件怎么发送