文档章节

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

Mr_Qi
 Mr_Qi
发布于 2017/06/01 14:38
字数 710
阅读 18
收藏 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

Mr_Qi

粉丝 280
博文 359
码字总数 369228
作品 0
南京
程序员
私信 提问
构建你的Office 365开发环境 - IOS版

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

justinliu927
04/16
0
0
软件项目开发环境构建之二:Confluence5.10.8安装

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

newthink
2016/11/03
0
0
PostgreSQL命令行工具 - pgcli

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

YuanyuanL
2015/12/18
634
0
IBM 的一些免费软件下载地址大全

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

红薯
2010/06/22
2.2K
2
linu系统延时任务和定时任务

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

wx59e701214b276
06/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0
【分享实录】BANCOR算法详解及代码实现

1 活动基本信息 1)主题:【区块链技术工坊22期】BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何开发自己的BANCOR去中心...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部