Для тех, кто не хочет использовать внешние почтовые программы и хочет отправлять почту () на выделенный Linux-сервер.
Способ, как php-сообщения, описаны в php.ini
в разделе [mail function]
, Параметр sendmail-path
описывает, как вызывается sendmail. Значение по умолчанию - sendmail -t -i
, поэтому, если вы заработаете sendmail -t -i < message.txt
в консоли linux, вы сделаете это. Вы также можете добавить mail.log
для отладки и убедиться, что почта действительно вызвана.
Различные MTA могут реализовать sendmail
, они просто делают символическую ссылку на свои двоичные файлы на это имя. Например, в debian default используется postfix. Настройте свой MTA для отправки почты и протестируйте ее с консоли с помощью sendmail -v -t -i < message.txt
. Файл message.txt
должен содержать все заголовки сообщения и тело, адресаты назначения для конверта будут взяты из заголовка To:
. Пример:
From: myapp@example.com
To: mymail@example.com
Subject: Test mail via sendmail.
Text body.
Я предпочитаю использовать ssmtp как MTA, потому что он прост и не требует запуска демона с открытыми портами. ssmtp подходит только для отправки почты с локального хоста, он также может отправлять аутентифицированную электронную почту через вашу учетную запись в общедоступной почтовой службе. Установите ssmtp и отредактируйте конфигурацию /etc/ssmtp/ssmtp.conf
. Чтобы иметь возможность также получать локальную системную почту для учетных записей unix (например, оповещения для root из заданий cron), настройте файл /etc/ssmtp/revaliases
.
Вот моя конфигурация для моей учетной записи в почте Yandex:
root=mymail@example.com
mailhub=smtp.yandex.ru:465
FromLineOverride=YES
UseTLS=YES
AuthUser=abcde@yandex.ru
AuthPass=password
DOM может иметь доступ к not в основном процессе, только в рендерере, к которому он принадлежит.
Имеется модуль ipc
, доступный на main process , а также процесс визуализации , который позволяет осуществлять связь между этими двумя сообщениями sync / async.
Вы также можете использовать remote ] для вызова основного API процесса из средства визуализации, но нет ничего, что позволило бы вам сделать это по-другому.
Если вам нужно что-то запустить в основном процессе в ответ на действие пользователя, используйте модуль ipc
для вызова функции, затем вы можете вернуть результат рендереру, также используя ipc
.
Код обновлен, чтобы отразить фактический (v0.37.8) API, так как @Wolfgang, предложенный в комментарии, см. В истории изменений для устаревших API, если вы застряли в старой версии Electron.
Пример скрипта в index.html
:
var ipc = require('electron').ipcRenderer;
var authButton = document.getElementById('auth-button');
authButton.addEventListener('click', function(){
ipc.once('actionReply', function(event, response){
processResponse(response);
})
ipc.send('invokeAction', 'someData');
});
И в основном процессе:
var ipc = require('electron').ipcMain;
ipc.on('invokeAction', function(event, data){
var result = processData(data);
event.sender.send('actionReply', result);
});
Вы можете использовать webContents.executeJavaScript (код [, userGesture, callback]) API для выполнения кода JavaScript.
например:
mainWindow.loadUrl('file://' + __dirname + '/index.html');
mainWindow.webContents.on('did-finish-load', ()=>{
let code = `var authButton = document.getElementById("auth-button");
authButton.addEventListener("click",function(){alert("clicked!");});`;
mainWindow.webContents.executeJavaScript(code);
});
Как указано в в этом учебнике :
В Electron у нас есть несколько способов связи между основными процессами и процессами рендеринга, такими как ipcRenderer и ipcMain модули для отправка сообщений и удаленный модуль для связи в стиле RPC.
blockquote>Итак, вы можете следовать примеру в https://github.com/electron/electron-api-demos . У вас должен быть файл
js
для каждогоhtml
.require
Код в
renderer.js
:const ipc = require('electron').ipcRenderer const asyncMsgBtn = document.getElementById('async-msg') asyncMsgBtn.addEventListener('click', function () { ipc.send('asynchronous-message', 'ping') }) ipc.on('asynchronous-reply', function (event, arg) { const message = `Asynchronous message reply: ${arg}` document.getElementById('async-reply').innerHTML = message })
Код в
ipc.html
:<script type="text/javascript"> require('./renderer-process/communication/sync-msg') require('./renderer-process/communication/async-msg') require('./renderer-process/communication/invisible-msg') </script>
Uncaught ReferenceError: require is not defined
любая идея почему? – ant_1618 25 September 2015 в 12:32require()
должен быть доступен в процессе визуализации. Изменить: ОК, теперь он здесь. – ROAL 25 September 2015 в 12:36.once()
. IPC Electron является стандартным Node.js EventEmitter . Кроме того,require('ipc')
был обесценен, теперьrequire('electron').ipcMain
иrequire('electron').ipcRenderer
. – Wolfgang 5 May 2016 в 19:20