2012-07-10 101 views
0

我写了一个顶点类,其将收到的邮件为线索时发送,并指定所有者,根据的toAddress(我知道,这是伟大的 - 谢谢^^)入站电子邮件服务无法正常工作从一组

当它发送到emailService生成的地址时,它完美无缺。然而,为了让我的用户不会看到这样的地址,我在我们的邮件服务器中创建了一个别名组(例如google),并给这个名字一个更合适的/可读的名字。 在这里类中断。

首先调试代码是直接地址,你可以看到,在SOQL返回1行(如应该)

10:21:15.091 (91499000)|SOQL_EXECUTE_BEGIN|[33]|Aggregations:0|select Id from User where Alias = :tmpVar1 
10:21:15.097 (97818000)|SOQL_EXECUTE_END|[33]|Rows:1 

第二个日志,是用日埃利亚斯/组(中唯一的地址时,组是同一个在第一个例子),然而,这一次,没有从SOQL

10:14:46.127 (127098000)|SOQL_EXECUTE_BEGIN|[33]|Aggregations:0|select Id from User where Alias = :tmpVar1 
10:14:46.132 (132488000)|SOQL_EXECUTE_END|[33]|Rows:0 

回来我认为这件事情的方式无论是谷歌变换/生成/转发电子邮件?

任何人有想法?

好吧,一些更多的信息。

我已经执行完全调试。我认为toAddresses []与原始地址(组)以及列表中的每一封电子邮件都被填充。 因此,我必须调整我的代码,以检查已知字符串的开头(使用)(lead)。

我仍然收到一个错误,下面是一些相关的代码。要注意:我要找的地址:导致 .alias.leadsource @ blablablabla.apex.salesforce.com

这是我的相关的Apex代码:

 Boolean isMissing = true; 
     Integer i = 0; 

     // if many toAddresses look for the one with : lead at the beginning 
     while (isMissing && i-1 < email.toAddresses.size()){ 
      sourceText = email.toAddresses[i].split('@'); 
      mParams = sourceText[0].split('\\.'); 

      if (mParams[0] == 'lead') 
       isMissing = false; 
      else 
       i++; 
     } 

这些都是从调试日志行: 一些说明:[email protected] ...是我创建的组。 它包含一封电子邮件:lead.saarm.processr @ ....... apex.salesforce.com邮件。

11:07:13.144 (144793000)|VARIABLE_ASSIGNMENT|[-1]|this.subject|"Re: test"|0x702f2bd6 
11:07:13.144 (144808000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:5 
11:07:13.144 (144813000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.144 (144831000)|VARIABLE_ASSIGNMENT|[-1]|this.plainTextBodyIsTruncated|false|0x702f2bd6 
11:07:13.144 (144860000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:34 
11:07:13.144 (144865000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.144 (144887000)|VARIABLE_ASSIGNMENT|[-1]|this.toAddresses|["[email protected] (6 more) ..."]|0x702f2bd6 
11:07:13.144 (144907000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:292 
11:07:13.144 (144912000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.144 (144936000)|VARIABLE_ASSIGNMENT|[-1]|this.references|["\u003CCAEYMRoxMYKDfEjM1Lf (48 more) ...","\u003CCAEYMRoxwwWamgU-oss (48 more) ...","\u003CCAEYMRowxqwP2iBeRp7 (48 more) ...","\u003CCAEYMRox1LY1ws9D370 (48 more) ..."]|0x702f2bd6 
11:07:13.144 (144955000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:17 
11:07:13.144 (144960000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.144 (144971000)|VARIABLE_ASSIGNMENT|[-1]|this.replyTo|"[email protected]"|0x702f2bd6 
11:07:13.144 (144985000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:17 
11:07:13.144 (144989000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145000000)|VARIABLE_ASSIGNMENT|[-1]|this.fromAddress|"[email protected]"|0x702f2bd6 
11:07:13.145 (145017000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:15 
11:07:13.145 (145025000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145044000)|VARIABLE_ASSIGNMENT|[-1]|this.fromName|"Saar "|0x702f2bd6 
11:07:13.145 (145067000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:1864 
11:07:13.145 (145076000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145104000)|VARIABLE_ASSIGNMENT|[-1]|this.htmlBody|"\u003Cdiv dir=\"ltr\"\u003E\u003Cbr c (1844 more) ..."|0x702f2bd6 
11:07:13.145 (145131000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145139000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145164000)|VARIABLE_ASSIGNMENT|[-1]|this.messageId|"\u003CCAEYMRowEZ3CLdTQKJU (48 more) ..."|0x702f2bd6 
11:07:13.145 (145192000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:5 
11:07:13.145 (145201000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:68 
11:07:13.145 (145221000)|VARIABLE_ASSIGNMENT|[-1]|this.htmlBodyIsTruncated|false|0x702f2bd6 
11:07:13.145 (145651000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:56 
11:07:13.145 (145661000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:12 
11:07:13.145 (145679000)|VARIABLE_ASSIGNMENT|[-1]|this.fromAddress|"test.processor+bncCO (36 more) ..."|0x5dee72ee 
11:07:13.145 (145695000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:103 
11:07:13.145 (145700000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:12 
11:07:13.145 (145712000)|VARIABLE_ASSIGNMENT|[-1]|this.toAddress|"lead.saarm.processor (83 more) ..."|0x5dee72ee 
11:07:13.146 (146435000)|EXECUTION_STARTED 
11:07:13.146 (146447000)|CODE_UNIT_STARTED|[EXTERNAL]|01pD0000001EXM9|ProcessInboundEmail.handleInboundEmail 
11:07:13.146 (146563000)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:1 
11:07:13.146 (146583000)|METHOD_ENTRY|[6]|01pD0000001EXM9|ProcessInboundEmail.ProcessInboundEmail() 

下面是while循环一些调试,我有一种感觉,什么是错在这里,因为我看的出界错误的,但不能指出来。

11:07:13.147 (147847000)|LIMIT_USAGE|[30]|SCRIPT_STATEMENTS|8|200000 
11:07:13.147 (147861000)|VARIABLE_SCOPE_BEGIN|[30]|i|Integer|false|false 
11:07:13.147 (147867000)|HEAP_ALLOCATE|[30]|Bytes:8 
11:07:13.147 (147875000)|VARIABLE_ASSIGNMENT|[30]|i|0 
11:07:13.147 (147912000)|SYSTEM_METHOD_ENTRY|[33]|LIST<String>.size() 
11:07:13.147 (147951000)|SYSTEM_METHOD_EXIT|[33]|LIST<String>.size() 
11:07:13.147 (147962000)|STATEMENT_EXECUTE|[33] 
11:07:13.147 (147966000)|STATEMENT_EXECUTE|[34] 
11:07:13.147 (147970000)|LIMIT_USAGE|[34]|SCRIPT_STATEMENTS|9|200000 
11:07:13.147 (147984000)|HEAP_ALLOCATE|[34]|Bytes:26 
11:07:13.147 (147996000)|HEAP_ALLOCATE|[34]|Bytes:1 
11:07:13.148 (148042000)|HEAP_ALLOCATE|[34]|Bytes:12 
11:07:13.148 (148049000)|HEAP_ALLOCATE|[34]|Bytes:1 
11:07:13.148 (148061000)|HEAP_ALLOCATE|[34]|Bytes:37 
11:07:13.148 (148085000)|VARIABLE_ASSIGNMENT|[34]|sourceText|["test.processor","optitex.com"]|0x14c8551b 
11:07:13.148 (148094000)|STATEMENT_EXECUTE|[35] 
11:07:13.148 (148098000)|LIMIT_USAGE|[35]|SCRIPT_STATEMENTS|10|200000 
11:07:13.148 (148109000)|HEAP_ALLOCATE|[35]|Bytes:14 
11:07:13.148 (148117000)|HEAP_ALLOCATE|[35]|Bytes:2 
11:07:13.148 (148133000)|HEAP_ALLOCATE|[35]|Bytes:12 
11:07:13.148 (148137000)|HEAP_ALLOCATE|[35]|Bytes:2 
11:07:13.148 (148147000)|HEAP_ALLOCATE|[35]|Bytes:25 
11:07:13.148 (148164000)|VARIABLE_ASSIGNMENT|[35]|mParams|["test","processor"]|0x43cf0468 
11:07:13.148 (148175000)|HEAP_ALLOCATE|[37]|Bytes:4 
11:07:13.148 (148182000)|HEAP_ALLOCATE|[37]|Bytes:4 
11:07:13.148 (148215000)|STATEMENT_EXECUTE|[40] 
11:07:13.148 (148220000)|LIMIT_USAGE|[40]|SCRIPT_STATEMENTS|11|200000 
11:07:13.148 (148226000)|HEAP_ALLOCATE|[40]|Bytes:8 
11:07:13.148 (148238000)|VARIABLE_ASSIGNMENT|[40]|i|1 
11:07:13.148 (148258000)|SYSTEM_METHOD_ENTRY|[33]|LIST<String>.size() 
11:07:13.148 (148270000)|SYSTEM_METHOD_EXIT|[33]|LIST<String>.size() 
11:07:13.148 (148278000)|STATEMENT_EXECUTE|[33] 
11:07:13.148 (148282000)|STATEMENT_EXECUTE|[34] 
11:07:13.148 (148286000)|LIMIT_USAGE|[34]|SCRIPT_STATEMENTS|12|200000 
11:07:13.148 (148368000)|HEAP_ALLOCATE|[34]|Bytes:31 
11:07:13.148 (148405000)|VARIABLE_SCOPE_BEGIN|[64]|e|Exception|true|false 
**It** 
11:07:13.148 (148527000)|STATEMENT_EXECUTE|[64] 
11:07:13.148 (148532000)|STATEMENT_EXECUTE|[65] 
11:07:13.148 (148536000)|LIMIT_USAGE|[65]|SCRIPT_STATEMENTS|13|200000 
11:07:13.148 (148546000)|HEAP_ALLOCATE|[65]|Bytes:5 
11:07:13.148 (148566000)|VARIABLE_ASSIGNMENT|[65]|this.success|false|0x10d7a7dd 
11:07:13.148 (148573000)|STATEMENT_EXECUTE|[66] 
11:07:13.148 (148576000)|LIMIT_USAGE|[66]|SCRIPT_STATEMENTS|14|200000 
11:07:13.148 (148584000)|HEAP_ALLOCATE|[66]|Bytes:18 

回答

3

OK,我从您发布什么异常由线

while (isMissing && i-1 < email.toAddresses.size()){ 

这将导致越界异常,因为i将打破之前变得等于email.toAddressess.size()引起猜测在while循环之外。

你可以改写这个循环,使其多一点约束安全,像这样

Boolean isMissing = true; 
for(Integer i=0; i < email.toAddresses.size(); i++){ 
    if(email.toAddresses[i].startsWith('lead.'){ 
     isMissing = false; 
     break; 
    } 
} 

我不知道任何不能解决您的第一个问题,但希望去除异常应有助于揭示潜在的问题。

+0

谢谢,我实际上已将其更改为for循环:-) – Saariko 2012-07-10 11:15:06