|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
Тестовый код (целиком) под спойлером. Тестовый проект и пример проблемного письма (оригинал) во вложении Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56.
Клиент конечно намудрил но ошибка характерная: Во вложении файл "Scan sa kopirke RUDOLF.eml" И сдается что это все-таки не по хорватски а по англиски написано (перенастройка системы на Languages->Advanced-> Croatian во всяком случае не помогает). А проблема такая: Код Код: vbnet 1. 2.
возвращает пустую строку вместо имени аттачмента а код Код: vbnet 1.
соответственно вылетает с ошибкой "The system can not find the file specified" (системе не удается найти путь) В принципе на худой конец (нежелательно но можно) могу генерировать свое имя attachment-а Но мне надо знать хотя б расширение аттачмента, потому как далее по коду аттачмент отправляется на печать через printto а это depends on расширение файла (которое по смыслу приложения допустимо любое, но знать то надо) Если не решается, то остается только отбрасывать такие письма со соей ошибкой "не возможно прочитать имя вложения", но не желательно опять же... Подскажет кто? Желательно решение, кот. не зависит от языка в системе и языка в письме. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 20:59 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
Дмитрий77, FRC 2046 , IANA . Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 00:31 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
скукотища, спасибо, но боюсь ты не понял вопроса. Я не ставлю целью разбор вложенных матрешек. В оригинальном письме которое в коде проекта MSG1.eml есть единственное вложение - файл с именем "Scan sa kopirke RUDOLF.eml" И CDO должно прочитать это имя И все!!! (потом сохранить как файл "Scan sa kopirke RUDOLF.eml" по заданному пути) strATT = att.FileName="Scan sa kopirke RUDOLF.eml" Но не читает!!! Я ради интереса отослал самому себе то же самое вложение (в своем письме). Файл MSG2.eml прилагается И в моем письме имя вложения читается (можете проверить с моим кодом). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 13:07 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
И сдается мне, что единственный вариант, если att.FileName возвращает пустую строку (по любой причине) надо игнорировать данное вложение и не выполнять код сохранения вложения и добавления его имени к списку вложений: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Ну, единственное когда клиенту отсылается письмо с ошибкой (когда нет вложений) надо заменить фразу "No attachments in your mail." на что-нибудь типа "No attachments in your mail or unreadable attachment name" ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 13:24 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
> Дмитрий77, > спасибо, но боюсь ты не понял вопроса. > Я не ставлю целью разбор вложенных матрешек. Действительно не понял. Думал тебе нужны все файлы из вложений. > В оригинальном письме которое в коде проекта MSG1.eml > есть единственное вложение > - файл с именем "Scan sa kopirke RUDOLF.eml" В msg1.eml нет файла с именем "Scan sa kopirke RUDOLF.eml", - есть прикреплёное письмо c темой "Scan sa kopirke RUDOLF". Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
А вот в письме msg2.eml, которое ты сам себе отсылаешь уже есть файл "Scan sa kopirke RUDOLF.eml" Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Как вариант, для сохранения аттачмента, как в варианте MSG1, можно читать тему письма, удалять из неё недопустимые для имени файла символы и сохранять ПИСЬМО в файл {преобразованнная тема}.eml Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 16:00 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
скукотища, >В msg1.eml нет файла с именем "Scan sa kopirke RUDOLF.eml", > For Each att In mmm.attachments > Case "message/rfc822" > filename = FileNameFromSubj(m2.Subject) & ".eml" Э, этак всех частных национально/(почтовый клиент что отсылал) зависимых случаев не переберешь В коллекции mmm.attachments есть, а имени при этом нет. А ".eml" при этом от себя дописывается, а если это не .eml а .jpg и т.д. Проще считать: нет имени - нет вложения. По крайней мере это гарантирует "отсутствие crash", что гораздо важней. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 17:13 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
> Дмитрий77, > Э, этак всех частных национально/(почтовый клиент что отсылал) зависимых случаев не переберешь > В коллекции mmm.attachments есть, > а имени при этом нет. > А ".eml" при этом от себя дописывается, а если это не .eml а .jpg и т.д. Национально зависимые случаи перебирать и не надо. Ты информацию по ссылкам из 13969659 хоть по диагонали просмотрел ? Расширение ".eml" я добавляю только для Content-Type: message/rfc822 ЗЫ: Приложение твоё. Если считаешь, что достаточно обработывать только attachment.filename то так тому и быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 17:26 |
|
Помогите решить проблему с сохранением аттачмент через CDO.
|
|||
---|---|---|---|
#18+
скукотищаЗЫ: Приложение твоё. Если считаешь, что достаточно обработывать только attachment.filename то так тому и быть. Приложение 1) сохраняет вложения 2) пытается превратить их в TIFF используя метод "printto на виртуальный принтер", либо другой метод, если оговорен для конкретных типов вложений. Поскольку "printto" сильно зависит от приложений в системе и настройки системы, то в общем случае допустимые типы attachment я и не ограничиваю. В случае с ".eml" по задуманной логике система должна сохранить файл, а потом попытаться его распечатать. А ошибка (обрабатываемая) возникла бы уже на этапе печати. Но она возникла раньше (в чем и был вопрос). В принципе думаю ДА, такие вложения проще вообще не обрабатывать никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2013, 17:55 |
|
|
start [/forum/topic.php?fid=60&msg=38162992&tid=2157129]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 18ms |
total: | 149ms |
0 / 0 |