Отправка электронной почты от формы - PullRequest
0 голосов
/ 02 октября 2018

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

Я посмотрел документацию по метеору , и это не очень полезно.

Это указывает на mailcompser 4 .

Когда я console.log прикрепляю на сервер, появляется имя.Он говорит, что ему нужен путь, однако я понятия не имею, что это такое.

Может кто-нибудь сказать, пожалуйста, что я делаю не так.

Путь: client

class EmailForm extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
    };

    this.fileInput = React.createRef();
  }

  handleSubmit(event) {
    event.preventDefault();

    const errors = jobApplicationValidation(this.state);

    const attachments = [
      {
        fileName: this.fileInput.current.files[0].name,
      },
    ];

    const attachments = [];

    attachments.push(this.fileInput.current.files[0]);

    Meteor.call(
      'sendEmail',
      this.props.email,
      this.props.myEmail,
      this.props.subject,
      this.props.text,
      this.fileInput.current.files[0],
    );
  }

  render() {
    return (
      <Form>
        <input
          type="file"
          ref={this.fileInput}
        />
        <Button onClick={this.handleSubmit}>Apply</Button>
      </Form>
    );
  }
}

Путь: Server

Meteor.methods({
  sendJobApplicationEmail(to, from, subject, text, attachments) {
      // Make sure that all arguments are strings.
    check([to, from, subject, text], [String]);

    this.unblock();

    Email.send({ to, from, subject, text, attachments });
  },
});

1 Ответ

0 голосов
/ 06 октября 2018

Красавчик Уилсон на помощь:

В почтовом пакете 3 по умолчанию Meteor использует mailcomposer 14 за кулисами.Убедитесь, что ваш массив вложений соответствует параметрам, перечисленным в документах вложений mailcomposer 40. В вашем примере вы ссылаетесь на PDF, поэтому вы, вероятно, захотите, чтобы ваш массив вложений выглядел примерно так:

 ... attachments: [   {
     fileName: 'book.pdf',
     filePath: '/home/hexen/Downloads/book.pdf',   }, ]

https://forums.meteor.com/t/meteor-email-with-attachment/23026

Но наши приятели в комментариях верны, вам нужен способ загрузить эти файлы на сервер, и ostrio:files - один из лучших пакетов.

Вот пример в нашем приложении, который поможет вам в этом:

MailQueue.sendMail({
            to: payslip.employee.email,
            from: 'Payroll System <no-reply@fslabs.net>',
            subject: `Payslip of ${payslip.payrollDate}`,
            html: `Hello ${payslip.employee.full_name}, <br /><br />Here is your payslip for payroll of ${payslip.payrollDate}<br /><br />Thanks.`,
            attachments: [{ path: `'/tmp/${payslip.employee.full_name}.zip'` }],
          });

Прежде всего, мы полагаемся на Meteor Mailer , поскольку он позволяет нам настраиватьопции отправки почты (это нормально, вам не нужно его использовать).Мы создаем наши файлы на сервере, которые хранятся в каталоге /tmp/.

...