Anonymous
Почему я продолжаю получать недействительную электронную почту из моего поля ввода? Электронная почта
Сообщение
Anonymous » 10 апр 2025, 03:14
В настоящее время я разрабатываю веб-сайт электронного портфеля во время создания и достижения окончательных шагов для веб-сайта, который я столкнулся с проблемой в разделе поля ввода, где я даю работодателям возможность общаться со мной через веб-сайт. Однако, как я его закодировал, я продолжаю получать всплывающее окно «недействительную электронную почту», но я не уверен, почему. Ниже я предоставил фрагмент кода, а также скриншот неверного сообщения об ошибке электронной почты, хотя и с моим фактическим адресом электронной почты. class = "Snippet-Code">
Код: Выделить всё
import { useState, useEffect } from "react"
import "./style.css"
import BackgroundLines from "../BackgroundLines"
import ParaWriting from "../ParaWriting"
import { motion, useAnimation } from "framer-motion"
import ArrowUpRightIcon from "../../assets/Icon/arrow-up-right.svg"
import { useInView } from "react-intersection-observer"
import Button from "../Button"
import Time from "../Time"
// emailjs
import emailjs from "@emailjs/browser"
// JSON
import emailjsconfig from "../../constants/emailjs.json"
import Alert from "../Alert"
export default function Footer() {
const controls = useAnimation()
const [ref, inView] = useInView()
const [isSending, setIsSending] = useState(false)
const [sendStatus, setSendStatus] = useState({ processed: false, message: "", variant: "success" })
const [hasAnimated, setHasAnimated] = useState(false)
const [fieldValues, setFieldValues] = useState({
name: false,
email: false,
message: false,
})
const handleComplete = () => {
setHasAnimated(true)
}
useEffect(() => {
// Start animation when the component is in view
if (inView && !hasAnimated) {
controls.start("visible")
}
}, [inView, controls])
const opacityVariant = {
hidden: { opacity: 0 },
visible: { opacity: 1 },
}
const inputFieldLineVariant = {
hidden: { width: "0%" },
visible: {
width: "100%",
},
}
const inputFields = [
{
label: "Name",
type: "text",
id: "name",
placeholder: "Enter name",
stateKey: "name",
},
{
label: "Email",
type: "email",
id: "email",
placeholder: "hello@mail.com",
stateKey: "email",
},
{
label: "Message",
type: "textarea",
id: "message",
placeholder: "Your message",
rows: "8",
wrap: "soft",
stateKey: "message",
},
]
const handleInputClick = (stateKey) => {
setFieldValues({
...fieldValues,
[stateKey]: true,
})
}
const timeoutAlert = () =>
setTimeout(() => {
setSendStatus({ ...sendStatus, processed: false })
}, 5000)
const sendEmail = async () => {
const requiredFields = ["name", "email", "message"]
const missingFields = requiredFields.filter((field) => !fieldValues[field])
if (missingFields.length > 0) {
setSendStatus({ processed: true, variant: "error", message: "Not all fields were filled" })
timeoutAlert()
return
}
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (!emailRegex.test(fieldValues.email)) {
setSendStatus({ processed: true, variant: "error", message: "Invalid email" })
return
}
setIsSending(true)
try {
const { serviceId, templateid, publicKey } = emailjsconfig
console.log("trigger")
const templateParams = {
name: fieldValues.name,
email: fieldValues.email,
message: fieldValues.message,
}
const response = await emailjs.send(serviceId, templateid, templateParams, publicKey)
console.log("Email sent successfully:", response)
setIsSending(false)
setSendStatus({ processed: true, variant: "success", message: "Success!" })
} catch (error) {
console.error("Error sending email:", error)
setIsSending(false)
setSendStatus({ processed: true, variant: "error", message: "Error" })
}
timeoutAlert()
}
return (
{inputFields.map((field, index) => (
{field.label}
{field.type === "textarea" ? handleInputClick(field.stateKey)}> : handleInputClick(field.stateKey)} />}
))}
handleComplete()}>
Copyright © {new Date().getFullYear()} Cameron Watkins
)
}
Если необходима дополнительная информация, я более чем рад предоставить github Repo, заранее.
Подробнее здесь:
https://stackoverflow.com/questions/795 ... ld-emailjs
1744244048
Anonymous
В настоящее время я разрабатываю веб-сайт электронного портфеля во время создания и достижения окончательных шагов для веб-сайта, который я столкнулся с проблемой в разделе поля ввода, где я даю работодателям возможность общаться со мной через веб-сайт. Однако, как я его закодировал, я продолжаю получать всплывающее окно «недействительную электронную почту», но я не уверен, почему. Ниже я предоставил фрагмент кода, а также скриншот неверного сообщения об ошибке электронной почты, хотя и с моим фактическим адресом электронной почты. class = "Snippet-Code"> [code]import { useState, useEffect } from "react" import "./style.css" import BackgroundLines from "../BackgroundLines" import ParaWriting from "../ParaWriting" import { motion, useAnimation } from "framer-motion" import ArrowUpRightIcon from "../../assets/Icon/arrow-up-right.svg" import { useInView } from "react-intersection-observer" import Button from "../Button" import Time from "../Time" // emailjs import emailjs from "@emailjs/browser" // JSON import emailjsconfig from "../../constants/emailjs.json" import Alert from "../Alert" export default function Footer() { const controls = useAnimation() const [ref, inView] = useInView() const [isSending, setIsSending] = useState(false) const [sendStatus, setSendStatus] = useState({ processed: false, message: "", variant: "success" }) const [hasAnimated, setHasAnimated] = useState(false) const [fieldValues, setFieldValues] = useState({ name: false, email: false, message: false, }) const handleComplete = () => { setHasAnimated(true) } useEffect(() => { // Start animation when the component is in view if (inView && !hasAnimated) { controls.start("visible") } }, [inView, controls]) const opacityVariant = { hidden: { opacity: 0 }, visible: { opacity: 1 }, } const inputFieldLineVariant = { hidden: { width: "0%" }, visible: { width: "100%", }, } const inputFields = [ { label: "Name", type: "text", id: "name", placeholder: "Enter name", stateKey: "name", }, { label: "Email", type: "email", id: "email", placeholder: "hello@mail.com", stateKey: "email", }, { label: "Message", type: "textarea", id: "message", placeholder: "Your message", rows: "8", wrap: "soft", stateKey: "message", }, ] const handleInputClick = (stateKey) => { setFieldValues({ ...fieldValues, [stateKey]: true, }) } const timeoutAlert = () => setTimeout(() => { setSendStatus({ ...sendStatus, processed: false }) }, 5000) const sendEmail = async () => { const requiredFields = ["name", "email", "message"] const missingFields = requiredFields.filter((field) => !fieldValues[field]) if (missingFields.length > 0) { setSendStatus({ processed: true, variant: "error", message: "Not all fields were filled" }) timeoutAlert() return } const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ if (!emailRegex.test(fieldValues.email)) { setSendStatus({ processed: true, variant: "error", message: "Invalid email" }) return } setIsSending(true) try { const { serviceId, templateid, publicKey } = emailjsconfig console.log("trigger") const templateParams = { name: fieldValues.name, email: fieldValues.email, message: fieldValues.message, } const response = await emailjs.send(serviceId, templateid, templateParams, publicKey) console.log("Email sent successfully:", response) setIsSending(false) setSendStatus({ processed: true, variant: "success", message: "Success!" }) } catch (error) { console.error("Error sending email:", error) setIsSending(false) setSendStatus({ processed: true, variant: "error", message: "Error" }) } timeoutAlert() } return ( {inputFields.map((field, index) => ( {field.label} {field.type === "textarea" ? handleInputClick(field.stateKey)}> : handleInputClick(field.stateKey)} />} ))} handleComplete()}> Copyright © {new Date().getFullYear()} Cameron Watkins ) }[/code] Если необходима дополнительная информация, я более чем рад предоставить github Repo, заранее. Подробнее здесь: [url]https://stackoverflow.com/questions/79565527/why-do-i-keep-getting-invalid-email-from-my-input-field-emailjs[/url]