2012-07-23 28 views
3

我必須解決應用程序中的問題。該應用程序是部署到應用程序服務器的Oracle Form。假設按下按鈕的過程結束時的形式是發送電子郵件。在按鈕中的代碼末尾,它有一個調用C:\內部CMD文件的PL/SQL代碼。當PL/SQL代碼調用CMD文件時,它傳遞了3個參數,它們是字符串變量。我有第三個問題。窗口中是否需要CHR(10)和CHR(13)?

這是第三個參數的一個示例:

'**開放請求**' || CHR(10)||

 '**********************'||chr(10)||chr(10)|| 

     '** Notice: Forward this mail to [email protected]'||chr(10)|| 

     '   stating whether the request is approved or rejected'||chr(10)||chr(10)|| 

     'Request Number : '||:peticiones_vacaciones.codigo||chr(10)|| 

     'Date of Request : '||to_char(:peticiones_vacaciones.fecha_peticion,'dd/mm/yyyy')||chr(10)||chr(10)|| 

cmd文件調用一個Vbscript,它創建一個Outlook對象並將第三個變量作爲HTML主體傳遞。

所有這一切的問題是,當有人在電子郵件正文中收到此電子郵件時,只會看到第一行是** VACATION REQUEST **身體的所有其他部分都缺失。

我發現,在Windows與vbscript你必須把兩個CHR(10)和CHR(13)在行的末尾?

這是真的嗎?這對我來說可能是問題嗎?

回答

4

電子郵件標準(RCF2822)指出,無論源平臺還是目標平臺,都必須使用回車和換行符(也稱爲CRLFchr(13)+chr(10))分隔行。這不是一個Windows問題]。

通常CRLF在分離標題時最爲重要,但它進一步限制了單行文本的長度不超過998個字符,最好不超過78個字符(1000,80沒有CRLF字符)。

在RFC2822 2.3節進一步指出,人體必須只包含CRLF一起,它們不能獨立所以它很可能是某條郵件的基礎設施是在第一次chr(10)截斷出現。如果你想單獨包含這些字符,你需要使用不同形式的內容編碼...例如(但這超出了你所要求的範圍 - 我並不是說一個解決方案;))

所有這一切說......如果上面的代碼是VBScript中你應該使用&concatenate兩個字符串(不||)。如果是plsql腳本,您是否確認該語句的輸出是大量文本而不僅僅是第一個字符串?

+0

感謝您的回答,我會盡力的! ||在PL/SQL中使用,因爲字符串是在表單內部構建的,然後在調用vbscript的cmd文件中作爲參數傳遞,上面的代碼是生成字符串的PL/SQL代碼。 – Alexandros 2012-07-23 20:30:19

+0

我自己發現了一個解決方案,最終這個代碼是一個HTML代碼,所以我用
替換了所有的chr(10)&(13),所以我可以使用html標籤來塑造我的文本,因爲html是所有結果 – Alexandros 2012-09-11 20:41:39