用ODI邮件工具发送不宜刊印的字符及utf-8字符
本文档的说明适用于:Oracle数据加载工具 – 版本:4.1.01.05及以上【发行版:4.1.01及以上】
本文档的说明适用于所有平台
问题描述:
当使用ODI邮件发送工具发送邮件时,接收者收到的内容中有的字符被屏蔽了,有的字符被替换成别的字符(如回车符被替换成”=20”)
原因:
(这种情况与ODI软件本身无关,而与邮件提供商的配置有关。)STMP服务编码的字符不能被POP客户端辨认
解决方案
有两种解决方案
1. 修改POP客户端配置
2. 编写一个特殊的Jython邮件发送程序来识别编码字符,Jython程序如下所示:
import smtplib
import string
myCharset = 'iso-8859-1'
mySMTPServer = 'mail.mymail_to.com'
myFromAddress = 'my Application Name <mail_from@mymail_from.com>'
myAddressList = ['mail_to1@mymail_to.com;mail_to2@mymail_to.com']
myHTMLMessage = '''From: %s\rTo: %s\rSubject: Here is the email subject\rMIME-Version: 1.0\rContent-Type: text/html; charset=%s\rContent-Transfer-Encoding: 8bit\rContent-Disposition: inline\r\r\r''' % (myFromAddress, myAddressList, myCharset)
myMsgBody = 'Here is the 1st line of the message \n and here the second \n ...'
myHTMLMessage = %s\n%s' % (myHTMLMessage, myMsgBody)
myConnection = smtplib.SMTP(mySMTPServer)
myConnection.sendmail('From: %s' % myFromAddress, 'To: %s' % myAddressList, myHTMLMessage)
myConnection.quit()
说明:'sendmail'是ODI安装库'/lib/scripting/Lib'中类'smtplib.py'的一个方法
以下是一个应用于不能修改POP客户端和SMTP配置的中文内容的具体例子。
.......
myCharset = 'utf-8'
.......
myConnection.sendmail('From: %s' % myFromAddress, 'To: %s' % myAddressList, myHTMLMessage.encode('utf-8'))