กระทู้เก่าบอร์ด อ.Yeadram
2,158 5
URL.หัวข้อ /
URL
ส่ง outlook mail ผ่าน โปรแกรม access
เรียนผู้เชี่ยวชาญ Access ทุกท่าน
ผมมีปัญหาเกี่ยวกับการการส่ง snapshot file ผ่าน outlook โดยใช้โปรแกรม access ในการส่ง ซึ่งในการส่งแต่ละครั้งจะส่งที่ละ หลายร้อย mail และเป็น mail ที่แตกต่างกันไปของใครของมัน
ปัญหาคือ มันจะมีลิมิตในการส่ง คือผมทำ looping ในการอ่าน ข้อมูลเพื่อส่งไปเรื่อยๆ มันจะส่งได้อยู่ประมาณ 400 mail แล้วก็จะ error ทุกครั้งและจะไม่สามารถส่งได้อีกจนกว่าเราจะปิด access แล้วเปิดขึ้นมาใหม่และเมื่อส่งใหม่ก็จะได้เท่าๆ เดิม มีวิธีไหนที่จะให้มันส่งโดยไม่จำกัดได้หรือไม่ครับ
ตัวอย่าง script ที่เขียน
Set odb = CurrentDb()
Set ods = odb.OpenRecordset("Select * From TotalEmail", dbOpenForwardOnly, dbReadOnly, dbReadOnly)
While Not ods.EOF
DoEvents
DoCmd.SendObject acSendReport, "Report", acFormatSNP, ods!Email, , , "Test", , False
ods.MoveNext
Wend
ods.Close
odb.Close
มันจะ error ว่า outlook.ost is in use ประมาณนี้ครับ
ผมมีปัญหาเกี่ยวกับการการส่ง snapshot file ผ่าน outlook โดยใช้โปรแกรม access ในการส่ง ซึ่งในการส่งแต่ละครั้งจะส่งที่ละ หลายร้อย mail และเป็น mail ที่แตกต่างกันไปของใครของมัน
ปัญหาคือ มันจะมีลิมิตในการส่ง คือผมทำ looping ในการอ่าน ข้อมูลเพื่อส่งไปเรื่อยๆ มันจะส่งได้อยู่ประมาณ 400 mail แล้วก็จะ error ทุกครั้งและจะไม่สามารถส่งได้อีกจนกว่าเราจะปิด access แล้วเปิดขึ้นมาใหม่และเมื่อส่งใหม่ก็จะได้เท่าๆ เดิม มีวิธีไหนที่จะให้มันส่งโดยไม่จำกัดได้หรือไม่ครับ
ตัวอย่าง script ที่เขียน
Set odb = CurrentDb()
Set ods = odb.OpenRecordset("Select * From TotalEmail", dbOpenForwardOnly, dbReadOnly, dbReadOnly)
While Not ods.EOF
DoEvents
DoCmd.SendObject acSendReport, "Report", acFormatSNP, ods!Email, , , "Test", , False
ods.MoveNext
Wend
ods.Close
odb.Close
มันจะ error ว่า outlook.ost is in use ประมาณนี้ครับ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R01154
ผมว่ามันไม่น่าจะเกี่ยวกับ access แล้วน่ะครับ จาก error แสดงว่า ไฟล์ ost ของ outlook ถูกใช้งานมากเกินไป (ฮิ ๆ ) หรืออาจเป็นไปได้ที่มีการบล็อคเมล์จำนวนมากจากทาง ISP ลองเช็คกับทาง admin หรือ ISP ดูน่ะ
2 @R01156
ลองเช็คกับผู้ดูแลแล้วครับ เขาบอกว่าไม่มี limit หรือ block กรณีดังกล่าว
แต่ที่ผมคิดว่าเป็นที่ access เพราะพอเราปิดแล้วเปิดใหม่ มันก็จะส่งได้อีกด้วยจำนวนเท่าๆ เดิม ผมก็เลยคิดว่ามันน่าจะเป็นที่ access และเท่าที่ดู help เกี่ยวกับเรื่อง looping เหมือนว่าถ้าเรามีโปรแกรมลักษณะของการ loop เยอะมันจะมีปัญหาเกี่ยวกับเรื่อง out of memory ผมพยายามลอง เพิ่ม ram แล้วมันก็จะได้เพิ่มมากขึ้นนิดหน่อยแล้วก็ error
แต่ที่ผมคิดว่าเป็นที่ access เพราะพอเราปิดแล้วเปิดใหม่ มันก็จะส่งได้อีกด้วยจำนวนเท่าๆ เดิม ผมก็เลยคิดว่ามันน่าจะเป็นที่ access และเท่าที่ดู help เกี่ยวกับเรื่อง looping เหมือนว่าถ้าเรามีโปรแกรมลักษณะของการ loop เยอะมันจะมีปัญหาเกี่ยวกับเรื่อง out of memory ผมพยายามลอง เพิ่ม ram แล้วมันก็จะได้เพิ่มมากขึ้นนิดหน่อยแล้วก็ error
3 @R01157
ลองหน่วงเวลาในลูปดูไหมครับ ถ้าหน่วงแล้วเมล์สามารถส่งได้มากกว่า 400 เมล์ ก็แสดงว่าพอจะช่วยได้ แต่จะต้องหน่วงกี่วินาที อันนี้ต้องลองเอาเองครับ
Dim T as Date
ส่วนตรงที่เป็น DoEvents ให้เพิ่มเป็น
T = Now()
Do Until DateDiff( "s", T, Now() ) >= 5 ' 5 second
DoEvents
Loop
อีกอย่างก็คือ เท่าที่อ่านดูใน Help ของ Outlook ไฟล์ .ost (offline folder file) ใช้เมื่อเราต้องการทำงานแบบ offline ไม่ได้ต่อกับ mail server ในขณะนั้น ซึ่งถ้าเราต่อกับ mail server อยู่แล้วและเป็น server ที่ทาง admin สามารถดูแลได้แล้วหล่ะก็ ลอง disable การใช้ .ost ดูไหมครับ (ตอนทดสอบต้องให้ admin ไม่ให้ส่ง mail ของเราที่จะทดสอบออกไปข้างนอกด้วยนะครับ) แล้วลองทดสอบโดยไม่ต้องหน่วงตามที่แนะนำไว้ข้างบน
อีกอย่างคือลองไปอ่านหัวข้อ About the .ost integrity check tool ใน Help ดูนะครับ
Dim T as Date
ส่วนตรงที่เป็น DoEvents ให้เพิ่มเป็น
T = Now()
Do Until DateDiff( "s", T, Now() ) >= 5 ' 5 second
DoEvents
Loop
อีกอย่างก็คือ เท่าที่อ่านดูใน Help ของ Outlook ไฟล์ .ost (offline folder file) ใช้เมื่อเราต้องการทำงานแบบ offline ไม่ได้ต่อกับ mail server ในขณะนั้น ซึ่งถ้าเราต่อกับ mail server อยู่แล้วและเป็น server ที่ทาง admin สามารถดูแลได้แล้วหล่ะก็ ลอง disable การใช้ .ost ดูไหมครับ (ตอนทดสอบต้องให้ admin ไม่ให้ส่ง mail ของเราที่จะทดสอบออกไปข้างนอกด้วยนะครับ) แล้วลองทดสอบโดยไม่ต้องหน่วงตามที่แนะนำไว้ข้างบน
อีกอย่างคือลองไปอ่านหัวข้อ About the .ost integrity check tool ใน Help ดูนะครับ
4 @R01162
การหน่วงเวลาลองทำไปแล้วครับ ไม่มีผลอะไรเลย
ส่วนเรื่องอื่นจะพยายามลองดูไปเรื่อยๆ
ส่วนเรื่องอื่นจะพยายามลองดูไปเรื่อยๆ
5 @R01234
ลองทุกวิธีแล้ว ไม่ได้เลยครับ มีใครพอช่วยได้มั่งครับ
Time: 0.3454s