如何提取退回电子邮件的全身内容?

时间:2016-12-22 12:48:12

标签: email google-apps-script gmail gmail-api

enter image description here

上面的截图是收到的退回邮件样本。

我正在使用以下代码来提取邮件正文。

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);
    }
  }
}

但是当我这样做时,我得到了以下输出。

enter image description here 正如您所看到的,身体的最后一部分缺失,即:

enter image description here

我也尝试过使用:

var body = Gmessage[j].getBody();

而不是“GetPlainBody()”,但输出仍然相同。

使用时:

 var body = Gmessage[j].getRawContent();

我把它作为缺失部分的输出,这在我看来是某种编码。 enter image description here

所以我的问题是,如何提取退回邮件的全部内容?

谢谢。

3 个答案:

答案 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);
                                                                      }
                                                                    }
                                                                    )
                                          }

)

它对我有用,并在日志本身中提供了全部内容。希望这会有所帮助。