试用环境开发环境不发邮件
博客专区 > Mr_Qi 的博客 > 博客详情
试用环境开发环境不发邮件
Mr_Qi 发表于8个月前
试用环境开发环境不发邮件
  • 发表于 8个月前
  • 阅读 8
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

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

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

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

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

最近一封为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:

 

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

共有 人打赏支持
粉丝 212
博文 227
码字总数 233861
×
Mr_Qi
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: