上面的截图是收到的退回邮件样本。
我正在使用以下代码来提取邮件正文。
function test()
{
var BouncedEmails = GmailApp.search("label:test The following message was undeliverable ");
for( var i=0;i<BouncedEmails.length;i++)
{
var Gmessage = GmailApp.getMessagesForThread(BouncedEmails[i]);
for(var j=0;j<Gmessage.length;j++)
{
var body = Gmessage[j].getPlainBody();
Logger.log(body);
}
}
}
但是当我这样做时,我得到了以下输出。
我也尝试过使用:
var body = Gmessage[j].getBody();
而不是“GetPlainBody()”,但输出仍然相同。
使用时:
var body = Gmessage[j].getRawContent();
所以我的问题是,如何提取退回邮件的全部内容?
谢谢。
答案 0 :(得分:2)
我终于找到了自己问题的答案。
这对我有用,对我们这个星球上的任何人都有用。
a:5:{i:0;s:295:"Error in file: "/home/jobixcoindia/public_html/app/code/local/Ced/CsMarketplace/sql/csmarketplace_setup/mysql4-upgrade-0.0.3-0.0.4.php" - SQLSTATE[HY000]: General error: 1293 Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause";i:1;s:1012:"#0 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(644): Mage::exception('Mage_Core', 'Error in file: ...')
#1 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(437): Mage_Core_Model_Resource_Setup->_modifyResourceDb('upgrade', '0.0.3', '0.0.28')
#2 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(320): Mage_Core_Model_Resource_Setup->_upgradeResourceDb('0.0.3', '0.0.28')
#3 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/Resource/Setup.php(235): Mage_Core_Model_Resource_Setup->applyUpdates()
#4 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/App.php(428): Mage_Core_Model_Resource_Setup::applyAllUpdates()
#5 /home/jobixcoindia/public_html/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Model_App->_initModules()
#6 /home/jobixcoindia/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#7 /home/jobixcoindia/public_html/index.php(83): Mage::run('', 'store')
#8 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}
@AmitAgarwal和@ShyamKansagra提供的解决方案也适用于某些情况,但使用哪种解决方案取决于您的具体要求。
答案 1 :(得分:0)
不要使用Logger.log,因为它会在一定数量的行后截断输出。将输出记录在电子表格中,您将看到使用getPlainBody()或getBody()提取整个正文。
我最近发布了一个Google脚本来获取所有bounced emails in Gmail并将其记录到Google表格中。它是开放的,因此可以建立在该脚本之上。
答案 2 :(得分:0)
我还尝试在退回的电子邮件中使用getBody()
,getPlainBody()
和getRawContent()
方法。我注意到这些方法没有给出整个电子邮件,即在日志中完全跳过了包含技术细节的部分。
所以,我使用了以下代码(@Amit Agarwal的所有信用),我在Amit在他的回答中分享的链接中找到了它,它给了我全部反弹回电子邮件。
以下是代码:
var t = "in:anywhere from:(mailer-daemon@google.com OR mailer-daemon@googlemail.com)";
GmailApp.search(t,0,500).forEach(function(t)
{
t.getMessages().forEach(function(r)
{
if(r.getFrom().indexOf("mailer-daemon")!==-1)
{
var i=r.getPlainBody();
Logger.log(i);
}
}
)
}
)
它对我有用,并在日志本身中提供了全部内容。希望这会有所帮助。