2012-07-10 104 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