email_worker_parser
email_worker_parser copied to clipboard
Uncaught ReferenceError: require is not defined at worker.js:1:20 (Code: 10021)
Uncaught ReferenceError: require is not defined at worker.js:1:20 (Code: 10021)
did you solved it? I am also getting error from import { EmailMessage } from "cloudflare:email";
Uncaught Error: No such module "cloudflare-internal:email".
imported from "cloudflare:email"
No
so I kinda solve it change the require to import and remove all the cloudflare:email stuff
import PostalMime from "postal-mime";
async function streamToArrayBuffer(stream, streamSize) {
let result = new Uint8Array(streamSize);
let bytesRead = 0;
const reader = stream.getReader();
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
result.set(value, bytesRead);
bytesRead += value.length;
}
return result;
}
export default {
async fetch(request, env, ctx) {
return new Response('Hello World!');
},
async email(event, env, ctx) {
const rawEmail = await streamToArrayBuffer(event.raw, event.rawSize);
const parser = new PostalMime();
const parsedEmail = await parser.parse(rawEmail);
console.log("Mail subject: ", parsedEmail.subject);
console.log("Mail message ID", parsedEmail.messageId);
console.log("HTML version of Email: ", parsedEmail.html);
console.log("Text version of Email: ", parsedEmail.text);
if (parsedEmail.attachments.length == 0) {
console.log("No attachments");
} else {
parsedEmail.attachments.forEach((att) => {
console.log("Attachment: ", att.filename);
console.log("Attachment disposition: ", att.disposition);
console.log("Attachment mime type: ", att.mimeType);
console.log("Attachment size: ", att.content.byteLength);
});
}
await event.forward(*your email address*);
},
};
now you can use other method if you need to send email but the mail parsing works
Currently not working
use wrangler to deploy from local nodejs env to worker, then you can simply npm install postal-mime