从 RN Expo 应用程序发送静默电子邮件,无需打开电子邮件客户端

Lyo*_*old 6 javascript api nodemailer react-native expo

我\xe2\x80\x99ve进行了搜索,并且\xe2\x80\x99t似乎可以找到任何符合我的问题细节的内容。

\n

我需要从 RN Expo 应用程序以静默方式向固定电子邮件地址发送一封电子邮件,因此当用户单击“发送”时,它会在不打开电子邮件客户端的情况下发送。\n我尝试使用 herokuapp.com API 和 Node Mailer 并取得了成功从 Android 设备发送,但不能从 IOS 设备发送。在 IOS 上,它显示已发送电子邮件的响应,但随后显示黄色警告。

\n

我的代码正在发送通过导航道具从前一屏幕传递的值。其中一个值是签名,我认为这可能会导致问题,因为它的base64,并且听说在IOS上,Print EXPO不提供base64代码,只提供本地URL,Node Mailer不接受该本地URL,只接受HTTPS URL 和基本代码。

\n

电子邮件需要以 pdf 格式发送。

\n

如果有人知道解决我的问题的办法,你将成为我的救星,我已经忙了好几天了!

\n
import * as Print from \'expo-print\';\nimport * as Sharing from \'expo-sharing\';\nimport * as MailComposer from "expo-mail-composer";\nimport * as FileSystem from \'expo-file-system\';\n\nexport default class Materials extends Component {\n\npdf = async () => {\nconst { navigation } = this.props;\nthis.setState({ disabled: true });\n\nconst customer_name = navigation.getParam(\n  "CustomerName",\n  "No Customer Name"\n);\n\nconst signa = navigation.getParam("sig", "No Signature");\n\nconst html = `<h1 style="text-align: center;"><strong>ALL Details</strong></h1>\n<p style="text-align: center;">${customer_name}</p>\n<img src="${signa}" />\n\n`;\n\nconst html2 = `<h1 style="text-align: center;"><strong>ALL Details</strong></h1>\n<h1 style="text-align: center;"><strong>ALL Details</strong></h1>\n`;\nconsole.log("signa", signa);\n\nconst pdf1url = await Print.printToFileAsync({ html });\nconst pdf1ur2 = await Print.printToFileAsync({ html: html2 });\n\nlet pdf1 = await FileSystem.readAsStringAsync(pdf1url.uri, {\n  encoding: FileSystem.EncodingType.Base64,\n});\n\nlet pdf2 = await FileSystem.readAsStringAsync(pdf1ur2.uri, {\n  encoding: FileSystem.EncodingType.Base64,\n}); // this.setState({ uri: base64 });\nawait fetch("EXAMPLE.COM/", {\n  method: "POST",\n  headers: {\n    Accept: "application/json",\n    "Content-Type": "application/json",\n  },\n\n  body: JSON.stringify({\n    tomail: ["test@googlemail.com"],\n    title: "Your code is 5015",\n    subject: "Enter Your subject",\n    base64: pdf1,\n    text: "some text",\n    pdfname: "pdfname",\n  }),\n})\n  .then((response) => {\n    alert("email send Successfully");\n    response.text();\n  })\n  .then((err) => console.log(err));\n\n// this.setState({ uri: base64 });\nawait fetch("EXAMPLE.COM/", {\n  method: "POST",\n  headers: {\n    Accept: "application/json",\n    "Content-Type": "application/json",\n  },\n  body: JSON.stringify({\n    tomail: ["test@googlemail.com""],\n    title: "Your code is 5015",\n    subject: "Enter your subject",\n    base64: pdf2,\n    text: "some text",\n    pdfname: "pdfname",\n  }),\n})\n  .then((response) => {\n    console.log(response.text());\n    alert("end email send Successfully");\n    response.text();\n    this.setState({ disabled: true });\n  })\n  .then((err) => {\n    console.log(err);\n    // alert("Email Not send");\n    this.setState({ disabled: true });\n  });};\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n