2017-12-17 7 views
-2

내가 VBScript를의 메시지 본문을 지원하는 txt 파일을 만든하지만 그것은 단지VBScript를

WScript.Sleep 100 

    Set WshShell=WScript.CreateObject("WScript.Shell") 

    Set objShell=WScript.CreateObject("WScript.Shell") 
    set objOutlook=CreateObject("Outlook.Application") 
    Set objMail=CreateObject("CDO.Message") 

Set objMail=objOutlook.CreateItem(0) 
strDesktop = WshShell.SpecialFolders("Desktop") 


Set objFileToReadTo   = CreateObject("Scripting.FileSystemObject").OpenTextFile(strDesktop + "\\send email with attachment\List_To.txt",1) 
Set objFileToReadCC   = CreateObject("Scripting.FileSystemObject").OpenTextFile(strDesktop + "\\send email with attachment\List_CC.txt",1) 
Set objFileToReadSubject  = CreateObject("Scripting.FileSystemObject").OpenTextFile(strDesktop + "\\send email with attachment\List_Subject.txt",1) 
Set objFileToReadBody  = CreateObject("Scripting.FileSystemObject").OpenTextFile(strDesktop + "\\send email with attachment\Email Body.txt",1) 
Set objFileToReadAttachments = CreateObject("Scripting.FileSystemObject").OpenTextFile(strDesktop + "\\send email with attachment\List_Attachments_withFileExtension.txt",1) 

Dim strLineTo 
Dim strLineCC 
Dim strLineSubject 
Dim strLineBody 
Dim strLineAttachments 

objMail.Display 

WScript.Sleep 10 

do while not objFileToReadTo.AtEndOfStream 
strLineTo = objFileToReadTo.ReadLine() 
objMail.To=strLineTo 
loop 
objFileToReadTo.Close 

WScript.Sleep 10 
do while not objFileToReadCC.AtEndOfStream 
strLineCC = objFileToReadCC.ReadLine() 
objMail.cc = strLineCC 
loop 
objFileToReadCC.Close 
'41 
WScript.Sleep 10 
do while not objFileToReadSubject.AtEndOfStream 
strLineSubject = objFileToReadSubject.ReadLine() 
objMail.Subject = strLineSubject 
loop 
objFileToReadSubject.Close 
'48 
WScript.Sleep 10 
do while not objFileToReadBody.AtEndOfStream 
strLineBody = objFileToReadBody.ReadLine() 
objMail.Body = strLineBody & vbCRLF 
loop 
objFileToReadBody.Close 
'55 
WScript.Sleep 10 
do while not objFileToReadAttachments.AtEndOfStream 
strLineAttachments = objFileToReadAttachments.ReadLine() 
objMail.Attachments.Add(strLineAttachments) 
loop 
objFileToReadAttachments.Close 
'62 

'objShell.Sendkeys "%s" 
WScript.Sleep 40 
'objShell.SendKeys "{TAB}" 
'objShell.SendKeys "{UP}" 
'objShell.SendKeys "{Enter}" 
'set MyEmail=nothing 
'objOutlook.Quit 
'Set objMail = Nothing 
'Set objOutlook = Nothing 

여기 인 messagebody.txt의 마지막 줄을 읽고 다음 내 messagebody.txt

Hi, 

Testing vbscript 

Regards, 

abcd 

마지막 ABCD 만 읽고 oulook 창에 표시합니다.

어떻게하면 여러 줄을 이해할 수 있습니까?

답변

2

ToList, CCList, body 등을 저장하는 데 왜 다른 텍스트 파일을 사용했는지 정말 모르지만이 방법을 사용하는 것이 확실하다면 변경하지 않을 것입니다.

이메일 본문에 전체 텍스트가 표시되지 않는 이유를 지적하고 있습니다. 당신은 당신이 그것에 추가해야 읽고 각 라인과 Body을 대체 루프에서

objMail.Body = objFileToReadBody.readAll 
+0

실제로 이유는 각 줄이 본문 텍스트를 대체하는 본문에 텍스트를 추가하지 않기 때문에 'ReadAll' 대신'objMail.Body = objMail.Body & strLineBody' 문제가 수정됩니다. – Lankymart

+0

@Lankymart 그 밖의 무엇을 코드의 주석 부분에 썼습니까? 나는 각 readline 호출과 함께 기존 라인을 덮어 쓴다고 썼다. 따라서 모든 내용을 포함시키는 더 좋은 방법은 readAll 메서드를 한 번에 사용하여 전자 메일 본문에 저장하는 것입니다. 그게 뭐가 잘못 됐니? – Gurman

+0

더 좋은 방법은'ReadAll'을 사용하여 각 줄을 추가하는 것입니다. 특히 텍스트 요구 사항이 크기가 커질수록 비효율적입니다. – Lankymart

1

함께

do while not objFileToReadBody.AtEndOfStream 
    strLineBody = objFileToReadBody.ReadLine()   'Here you are just overwriting the value contained in strLineBody in each loop iteration. Hence, in the end, only last line is left in this variable 
    objMail.Body = strLineBody & vbCRLF 
loop 

: 다음 코드를 교체합니다. 이 줄을 전환하십시오.

objMail.Body = strLineBody & vbCRLF 

;

objMail.Body = objMail.Body & strLineBody & vbNewLine 

당신은 루프를 포기하고이 최소한의 텍스트에 대해 잘 될 것입니다 동안 큰 텍스트 파일 프로세스가 비효율적 각 통해 반복 할 것이라는 점을 염두에 곰 (suggested있다 @Gurman로) ReadAll사용하는 경우 당신이 이미 시작했기 때문입니다.