AleDi2
August 17, 2022, 3:06pm
1
Ciao a tutti.
É possibile scrivere una stringa con piú righe?
La mia necessitá nasce dal dover inviare per mail un testo, contenente delle variabili prese dal codice in esecuzione che variano in base alle funzioni scelte.
Prendendo questo esempio di codice, ho costruito il messaggio da inviare:
String textMsg = "Valore1: " + String(Val1) + " Valore2: " + String(Val2) + " Valore3: " + String(Val3);
message.text.content = textMsg.c_str();
message.text.charSet = "us-ascii";
message.text.transfer_encoding = Content_Transfer_Encoding::enc_7bit;
message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low;
message.response.notify = esp_mail_smtp_notify_success | esp_mail_smtp_notify_failure | esp_mail_smtp_notify_delay;
Questa é la parte di codice che invia il messaggio di testo.
Per creare la stringa con i valori del codice, ho scritto cosí:
String textMsg = "Valore1: " + String(Val1) + " Valore2: " + String(Val2) + " Valore3: " + String(Val3);
Tuttavia io ora avrei la necessitá di andare a capo e scrivere un'altra riga, come potrei fare?
Grazie a tutti
J-M-L
August 17, 2022, 5:31pm
3
Inoltre, la classe String può causare problemi di memoria. Se hai davvero bisogno di usarlo, riduci al minimo l'allocazione dinamica.
textMsg .reserve(50);
textMsg = "Valore1: "; textMsg += String(Val1);
textMsg += " Valore2: "; textMsg += String(Val2);
textMsg += " Valore3: "; textMsg += String(Val3);
textMsg += "\r\n"; // salta alla riga
AleDi2
August 17, 2022, 6:21pm
4
In che senso? Perché io potrei anche arrivare a dover inviare all'incirca 30 righe, con 13/16 valori per riga.. Non ce la faccio?
fratt
August 17, 2022, 6:27pm
5
Su cosa lavori?
Su esp la classe string è gestita meglio e crea qualche problema in meno, ma comunque cerca di non abusarne.
fratt
August 17, 2022, 6:35pm
7
Che scheda... Arduino? Esp? Altro?
AleDi2
August 17, 2022, 6:36pm
8
ESp8266
Ne approfitto per una domanda: la versione che uso io é a 4MB, come mai sullo sketch mi ritrovo un MB solo?
fratt
August 17, 2022, 6:39pm
9
Su questo non sono molto ferrato...
Sicuro di aver selezionato la scheda giusta nel menù? Mi pare ci siano diverse scelte...
Però per risposte più precise meglio che aspetti qualcuno che conosce meglio gli esp
AleDi2
August 17, 2022, 7:09pm
10
Va bene, tranquillo
Grazie comunque!
Si, sull'IDE ho selezionato la versione a 4MB, peró resta comunque un solo MB per gli sketch
Qualcuno sa se c'é modo di aumentarli?
J-M-L
August 18, 2022, 8:41am
11
qual è la tua libreria di eMail?
puoi costruire il corpo in più chiamate?
AleDi2
August 18, 2022, 9:48am
12
Non lo so se si puó costruire a pezzi..
La libreria é ESP_Mail_Client
Dipende da come invii la mail. Raw text o html?
AleDi2
August 18, 2022, 11:56am
14
Ho entrambi i metodi utilizzabili, peró non saprei come passare le variabili al codice HTML
\r\n per text ma se invii in html, sempre testo è ma puoi aggiungere i tag html per formattare il testo. Ad esempio a capo per html inserisci il testo <br>
"php - New lines (\r\n) are not working in email body - Stack Overflow "
Per un html spedisci:
<HTML><body>
messaggio
</body></HTML>
Nel messaggio puoi usare ad esempio grassetto per il grassetto.
"HTML Text Formatting "
AleDi2
August 18, 2022, 1:48pm
16
Si, peró come le passo le variabili al codice HTML?
Sempre allo stesso modo. Non cambia nulla.
Eventualmente puoi aggiungere del html per evidenziare, esempio grassetto
String textMsg = "Valore1: <b>" + String(Val1) + "</b> Valore2: " ; .... etc....
AleDi2
August 18, 2022, 1:55pm
18
No aspetta, scusami ma mi sto confondendo...
Mi puoi fare un esempio scritto di HTML completo con la stringa che devo inviare?
Scusami se rompo ma davvero mi sto confondendo
textMsg ="<HTML><body>"
textMsg += "Valore1: <b>"; textMsg += String(Val1); textMsg += "</b>";
textMsg += " Valore2: "; textMsg += String(Val2);
textMsg += " Valore3: "; textMsg += String(Val3);
textMsg += "<br>"; // salta alla riga
textMsg += "seconda riga";
textMsg +="</body></HTML>"
AleDi2
August 18, 2022, 2:22pm
20
Ed a livello di memoria si ha un risparmio? O sempre uguale ma si ha la possibilitá di giocare sulla pagina a livello estetico?