Невозможно отправить электронное письмо с вложением PDF с помощью Chrome

У меня есть форма, в которую пользователь вводит информацию и имеет возможность загрузить документ. После того, как они заполнили форму и нажали кнопку отправки, указанному получателю будет отправлено электронное письмо. Это отлично работает в IE и Firefox (независимо от того, загружает/не загружает ли пользователь документ).

Однако, когда пользователь загружает документ и отправляет форму в Chrome, кажется, что Chrome пытается обработать документ, а затем аварийно завершает работу.

Вот логика, в которой я проверяю, загрузил ли пользователь документ в форму, и сохраняю его во временной папке:

<cfif isdefined("FORM.file_type_attachment") AND Len(FORM.file_type_attachment) GT 0>
   <!--- first actually upload the file --->
   <cffile action="upload"
             filefield="file_type_attachment"
             destination="destination of file"
             nameconflict="Makeunique">
    <!--- now create a temporary holder for the attachment later on --->
    <cfset attachment_local_file_1 = "file location">
</cfif>

<!--- Attaches attachment to email. --->
<cfsilent>
    <!--- Note that I used the <CFSILENT> tag, this will kill the white space in this area so your email is not cluttered with white space. --->
    <cfif isdefined("FORM.file_type_attachment") AND Len(FORM.file_type_attachment) GT 0>
        <cfmailparam file="#attachment_local_file_1#">
    </cfif>
</cfsilent> 

Update5: я могу без проблем отправлять определенные файлы. Однако, когда пользователь пытается отправить PDF-файл по электронной почте, Chrome не может его обработать, и появляется сообщение об ошибке, уведомляющее пользователя о возникновении ошибки. В инструментах разработки я вижу следующее: Это то, что я сделал до сих пор. Это отлично работает, если

Следующий код представляет собой подход, который я пытался разрешить пользователям прикреплять документ. Есть ли другой подход при работе с PDF? Любая помощь будет оценена по достоинству.

        var sendForm = function(event) {
            event.preventDefault();
            var url = 'MarcomRequestSent.cfm';
            document.getElementById('smbt').disabled = true;
            var form = event.target;
            var formData = new FormData(form);
            var xhr = new XMLHttpRequest();
            xhr.open('POST', url, true);
            //xhr.setRequestHeader('Content-type', undefined);
            xhr.onload = function(e) { 
                if(xhr.status == 200) {
                    //open the modal once the form passes validation
                    var m = modal.open({content: "<div class='modal-content'><div class='modal-header'><h4 class='modal-title' style='color: #9EC630 !important; font-size:28px; text-align:center;'>Request Sent</h4><button style='border:none;' id='closex' type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true' style='color:black'>x</span></button></div><br /><div class='modal-body'>" + "<p style='font-size:16px'>To return to the Marketing page, please click <a href='marketing.cfm'>here</a>."});             
                    if(m == true) {
                        return m;
                    } 
                    console.log('Form data (including any attachment) has been uploaded successfully.'); 
                }
                else {
                    if(xhr.status == 500){
                        alert("We seem to have encountered a problem. Please contact IT.");
                    }
                }
            };
            xhr.onerror = function(e) { 
                alert("We seem to have encountered a problem. Please contact IT."); 
            };
            xhr.send(formData);
        };

        document.getElementById('marcom_request_form').addEventListener('submit', sendForm);

Есть ли способ, которым пользователи могут отправлять PDF? Нужна помощь


person Roberto Flores    schedule 14.04.2021    source источник
comment
Действительно ли файл загружается на сервер?   -  person Dan Bracuk    schedule 15.04.2021
comment
@DanBracuk: да. У меня нет проблем, если я использую IE или Firefox. Он отправляет электронное письмо пользователю с вложением. В хроме вылетает   -  person Roberto Flores    schedule 15.04.2021
comment
@DanBracuk: Вы знаете, что вызывает эту проблему?   -  person Roberto Flores    schedule 15.04.2021
comment
Загружается ли файл при использовании Chrome? Когда происходит сбой, вы имеете в виду браузер Chrome или сервер ColdFusion? Откройте инструменты разработчика для Chrome, а затем загрузите и отправьте форму. Вы видите ошибки в консоли? Также проверьте журналы сервера на наличие ошибок.   -  person Miguel-F    schedule 15.04.2021
comment
@ Miguel-F Я имею в виду сбой браузера Chrome, а не сервера ColdFusion. Я не вижу ошибок, возникающих в инструментах разработки для Chrome, когда форма загружается и отправляется. В инструменте разработчика я вижу, что он направляется на страницу chrome-error://chromewebdata.   -  person Roberto Flores    schedule 15.04.2021
comment
@Miguel-F: мне нужно использовать expandPath (или что-то подобное) на <cfset attachment_local_file_1 = "file location">   -  person Roberto Flores    schedule 15.04.2021
comment
Для меня не имеет смысла, что Chrome ведет себя иначе, чем другие браузеры. Вам нужно выяснить, почему вы используете инструменты разработчика (поскольку вы видите проблему из браузера). Посмотрите, поможет ли этот ответ stackoverflow.com/a/55716793/1636917   -  person Miguel-F    schedule 15.04.2021
comment
@Miguel-F: На основании предоставленной вами ссылки я выполняю перенаправление на другую страницу, уведомляя пользователя о том, что его запрос был отправлен, и т. д. При перенаправлении также отправляется электронное письмо. У меня открыт инструмент разработчика при тестировании формы в Chrome, и кроме ошибки хрома проблем нет. Я также проверяю журнал perserve при тестировании формы, и он не предоставляет никаких дополнительных сведений, кроме того, что показывает, что он переходит на страницу chrome-error.   -  person Roberto Flores    schedule 15.04.2021
comment
Хорошо, что страница у вас заработала. Если вы хотите продолжить расследование, я предлагаю что-то вроде этого. 1 — запустить страницу coldfusion, выводящую простой текст. 2 - запустить страницу с тегом cfmail, который не добавляет вложения. 3 - повторить шаг 2, но прикрепить файл, который уже есть на сервере. 4 - что-то вроде того, что у вас сейчас, но без логики if/else. 5 - то, что у вас есть сейчас. Это поможет вам понять, почему что-то сломалось, и предотвратить повторение.   -  person Dan Bracuk    schedule 15.04.2021
comment
@DanBracuk: мне не удалось заставить страницу работать. Что я имел в виду в своем комментарии, так это то, что ссылка, которую предоставил Мигель-Ф, я использую тот же подход, перенаправляя пользователя на другую страницу, где они уведомляются об отправке их электронной почты. Этот подход не работает в Chrome. Однако этот подход работает в IE и Firefox.   -  person Roberto Flores    schedule 15.04.2021
comment
@DanBracuk: Нужно ли мне сначала загрузить документ, который был загружен в форму (во временную папку), прежде чем отправлять электронное письмо. Как только документ будет сохранен во временной папке, отправить форму по электронной почте?   -  person Roberto Flores    schedule 16.04.2021
comment
@DanBracuk: я пытаюсь использовать xmlhttprequest для отправки вложения, но FormData не отправляет данные, как это было, когда я выполняю params var. Что мне не хватает   -  person Roberto Flores    schedule 19.04.2021
comment
Вы случайно не используете один из портов, которые блокирует Chrome? chromium.googlesource.com/ хром/src.git/+/refs/heads/main/   -  person Shawn    schedule 20.04.2021
comment
@Shawn: Да, я использую порт 25. Я могу без проблем отправлять файлы Excel, Word, txt и изображения. Однако, когда я пытаюсь отправить электронное письмо с вложением в формате PDF, у меня возникают проблемы.   -  person Roberto Flores    schedule 22.04.2021
comment
@Shawn: Будет ли причина, по которой pdf-файл вызовет проблему, из-за которой хром не отправит электронное письмо?   -  person Roberto Flores    schedule 22.04.2021
comment
@DanBracuk: я удалил предыдущий вопрос и обновил этот, чтобы сосредоточиться на проблеме, с которой я столкнулся.   -  person Roberto Flores    schedule 22.04.2021
comment
@RobertoFlores Разные браузеры могут блокировать разные вещи по разным причинам. Я считаю, что последнее обновление Chrome добавило блокировку порта 10080 или что-то в этом роде. И, возможно, добавили другие вещи. Я не уверен. Обычный PDF-файл должен быть действительным, но он может быть заблокирован где-то еще, например, антивирусным сканером. Проверьте журналы вашего сервера и посмотрите, есть ли какие-либо сообщения, касающиеся неудачного запроса.   -  person Shawn    schedule 23.04.2021