文档章节

试用环境开发环境不发邮件

Mr_Qi
 Mr_Qi
发布于 2017/06/01 14:38
字数 710
阅读 10
收藏 0
点赞 0
评论 0

对于近期项目出现了奇怪的现象

项目试用环境出现了没有错误邮件的情况。

初期觉着没有问题,恰逢端午过节,认为没有人在开发环境测试导致。

到了发布试用环境也没有错误邮件

最近一封为05-27日。

发布后发现生产环境可以正常收到邮件(很诡异)。

参考了前两次邮件的问题

maven项目引入新依赖问题

slf4j 更新版本导致无日志输出

 

对比后发现没有任何问题。

可以保证的是maven和邮件配置都没有被修改。

注意到一个现象,试用环境在05-27之后再无错误邮件但是确实包含错误日志的。

并且在05-31日才发布,可以确定邮件发不出来应该和代码的变化没有关系,

那么可以比较一下试用环境和生产环境的邮件配置。

<executions>
    <execution>
        <id>replace</id>
        <phase>compile</phase>
        <goals>
            <goal>run</goal>
        </goals>
        <configuration>
            <tasks>
                <echo>
                    process system.properties: set MAIL.To to ${exception.mail.to};
                </echo>
                <replaceregexp file="${basedir}/target/classes/system.properties"
                               match="exception\.mail\.to.*"
                               replace="exception\.mail\.to = ${exception.mail.to}"
                               byline="true"/>
                <echo>
                    process system.properties: set MAIL.Subject to
                    ${exception.mail.subject};
                </echo>
                <replaceregexp file="${basedir}/target/classes/system.properties"
                               match="exception\.mail\.subject.*"
                               replace="exception\.mail\.subject = ${exception.mail.subject}"
                               byline="true"/>
                <echo>
                    process system.properties: set MAIL.Threshold =
                    ${exception.mail.threshold};
                </echo>
                <replaceregexp file="${basedir}/target/classes/system.properties"
                               match="exception\.mail\.threshold.*"
                               replace="exception\.mail\.threshold = ${exception.mail.threshold}"
                               byline="true"/>
 
                <echo>
                    process system.properties: set business.additivity =
                    ${business.additivity};
                </echo>
                <replaceregexp file="${basedir}/target/classes/system.properties"
                               match="business\.additivity.*"
                               replace="business\.additivity = ${business.additivity}"
                               byline="true"/>
 
 
            </tasks>
        </configuration>
    </execution>

发现了唯一的却别在于接受者配置的不一样。

试用环境和开发环境均配置的是个人邮箱而生产环境配置的是邮件列表。

灵光闪现最近有个开发离职,会否是某个开发离职导致他的邮箱无法使用,发送邮件失败?

果然发现

/**
 * Send the contents of the cyclic buffer as an e-mail message.
 */
protected void sendBuffer(CyclicBuffer<E> cb, E lastEventObject) {
 
    // Note: this code already owns the monitor for this
    // appender. This frees us from needing to synchronize on 'cb'.
    try {
        MimeBodyPart part = new MimeBodyPart();
 
        StringBuffer sbuf = new StringBuffer();
 
        String header = layout.getFileHeader();
        if (header != null) {
            sbuf.append(header);
        }
        String presentationHeader = layout.getPresentationHeader();
        if (presentationHeader != null) {
            sbuf.append(presentationHeader);
        }
        fillBuffer(cb, sbuf);
        String presentationFooter = layout.getPresentationFooter();
        if (presentationFooter != null) {
            sbuf.append(presentationFooter);
        }
        String footer = layout.getFileFooter();
        if (footer != null) {
            sbuf.append(footer);
        }
 
        String subjectStr = "Undefined subject";
        if (subjectLayout != null) {
            subjectStr = subjectLayout.doLayout(lastEventObject);
 
            // The subject must not contain new-line characters, which cause
            // an SMTP error (LOGBACK-865). Truncate the string at the first
            // new-line character.
            int newLinePos = (subjectStr != null) ? subjectStr.indexOf('\n') : -1;
            if (newLinePos > -1) {
                subjectStr = subjectStr.substring(0, newLinePos);
            }
        }
 
        MimeMessage mimeMsg = new MimeMessage(session);
 
        if (from != null) {
            mimeMsg.setFrom(getAddress(from));
        } else {
            mimeMsg.setFrom();
        }
 
        mimeMsg.setSubject(subjectStr, charsetEncoding);
 
        List<InternetAddress> destinationAddresses = parseAddress(lastEventObject);
        if (destinationAddresses.isEmpty()) {
            addInfo("Empty destination address. Aborting email transmission");
            return;
        }
 
        InternetAddress[] toAddressArray = destinationAddresses.toArray(EMPTY_IA_ARRAY);
        mimeMsg.setRecipients(Message.RecipientType.TO, toAddressArray);
 
        String contentType = layout.getContentType();
 
        if (ContentTypeUtil.isTextual(contentType)) {
            part.setText(sbuf.toString(), charsetEncoding, ContentTypeUtil.getSubType(contentType));
        } else {
            part.setContent(sbuf.toString(), layout.getContentType());
        }
 
        Multipart mp = new MimeMultipart();
        mp.addBodyPart(part);
        mimeMsg.setContent(mp);
 
        mimeMsg.setSentDate(new Date());
        addInfo("About to send out SMTP message \"" + subjectStr + "\" to " + Arrays.toString(toAddressArray));
        Transport.send(mimeMsg);
    } catch (Exception e) {
        addError("Error occurred while sending e-mail notification.", e);
    }
}

发现报错

javax.mail.SendFailedException: Invalid Addresses; nested exception is:

 

删除掉离职者的邮箱果然可以正常了

© 著作权归作者所有

共有 人打赏支持
Mr_Qi
粉丝 251
博文 298
码字总数 312931
作品 0
南京
程序员
构建你的Office 365开发环境 - IOS版

博客地址:http://blog.csdn.net/FoxDave 本文主要介绍在开始创建应用之前,如何构建你的Office 365开发环境去调用Office 365 API。 构建Office 365开发环境包含了三个一次性的工作: 下载开...

justinliu927 ⋅ 04/16 ⋅ 0

系统延时与定时任务

一、延时任务 在Linux中延时任务是临时的,可以指定某一个任务在将来的特定时间运行 1、at命令 基本操作格式: 延时命令at + 时间 或者now+xmin表示从现在开始过多长时间后 回车 输入动作 再...

wx59e701214b276 ⋅ 2017/11/03 ⋅ 0

PostgreSQL命令行工具 - pgcli

简介 pgcli 是针对PostgreSQL的命令行工具,他的特色是对SQL能够语法高亮显示,并且能对输入进行自动提示。(同时,针对MySQL也有一个类似的命令行工具mycli)。 网站: http://pgcli.com/ 授...

YuanyuanL ⋅ 2015/12/18 ⋅ 0

软件项目开发环境构建之二:Confluence5.10.8安装

Confluence是一个非常棒的wiki知识库系统,支持Blog,也支持团队创建项目文档,编辑所见即所得,支持word导入导出,对团队管理有很好的帮助作用。从最初的想法到最终的需求,都能够通过Confl...

newthink ⋅ 2016/11/03 ⋅ 0

19.12 添加自定义监控项目 19.13/19.14 配置邮件告警 19.15 测试告警

19.12 添加自定义监控项目 zabbix-agent端: zabbix-server端: 19.13/19.14 配置邮件告警 19.15 测试告警 19.16 不发邮件的问题处理 1.检查是否能发邮件 2.检查报警媒介是否配置正确 3.添加...

martin20162018 ⋅ 04/17 ⋅ 0

IBM 的一些免费软件下载地址大全

IBM 各个品牌(IM、Lotus、WebSphere、Tivoli、Rational)软件产品基本都支持 Linux,都有相应的 Linux 版本。本下载中心为了方便读者找到相应的软件产品 Linux 版,专门将热门软件组织在一起...

红薯 ⋅ 2010/06/22 ⋅ 2

linu系统延时任务和定时任务

一、延时任务 在Linux中延时任务是临时的,可以指定某一个任务在将来的特定时间运行 1、at命令 基本操作格式: 2、at执行命令权利设定 /etc/at.deny #用户黑名单,此名单中的用户不能执行at命...

wx59e701214b276 ⋅ 2017/11/02 ⋅ 0

R3Query 大数据分析系统最新版免费试用

R3 Query大数据分析系统介绍: R3 Query大数据分析展现平台是一个解决企业级报表系统问题的新方案,为企业的管理层、决策层展现隐藏在数据背后的信息和规律,为管理的科学化、精细化提供有利...

r3yun ⋅ 2016/12/09 ⋅ 1

Java Web开发环境的搭建(一)

工欲善其事必先利其器! 搭建开发环境需要使用的软件如下所示: JDK 1.7 / 1.8 JetBrains IDEA 2016.3.2 (集成开发工具) Maven 3.2.5 (项目构建与JAR包管理工具) Git for Windows 2.11 (...

Oxidyc ⋅ 2016/12/28 ⋅ 0

软件项目开发环境构建之三:JIRA7.2.3安装

JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。可以使用JIRA Software将收集到的需求,采用...

newthink ⋅ 2016/11/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 19分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 39分钟前 ⋅ 0

a href="#"

<a href="#">是链接到本页,因为你有的时候需要有个链接的样式,但是又不希望他跳转,这样写,你可以把这个页面去试试

颖伙虫 ⋅ 46分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 46分钟前 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 54分钟前 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 今天 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremo...

Linux_老吴 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部